[PHP-users 22276]Re: ereg関数の引数による戻り値の違いについて
Tadashi Jokagi
ml @ elf.no-ip.org
2004年 6月 19日 (土) 00:11:12 JST
上鍵です.こんにちは.
#このネタ一瞬びびった
下記検証はマニュアルを見ながらでもソースを見ながらでもないんです
が(苦笑
Masayuki AOKIさんの<20040618230653.B1DC.INFO @ martin.bz>から
>[例]
> $str = "012345abcdef";
> if(ereg("5abc", $str, $reg)==1){
> .....
> }
if(ereg("5abc", $str, $reg)==TRUE){
と書かないから悪いのです.マニュアルは boolean と書いてますから.
っていうのはフレームの元ですが(苦笑 上記なら成り立ちました.
[elf @ server elf]$ php -r '$str = "012345abcddddef"; var_dump( ereg("5abc", $str, $reg));'
int(4)
[elf @ server elf]$ php -r '$str = "012345abcddddef"; var_dump( ereg("5abc", $str, $reg)==1);'
bool(false)
[elf @ server elf]$ php -r '$str = "012345abcddddef"; var_dump( ereg("5abc", $str, $reg)==TRUE);'
bool(true)
[elf @ server elf]$ php -r '$str = "012345abcddddef"; var_dump( ereg("5abc", $str, $reg)===TRUE);'
bool(false)
です.っで,どういうとかというと,
[elf @ server elf]$ php -r 'echo 1 == TRUE ;echo "\n";'
1
[elf @ server elf]$ php -r 'echo 4 == TRUE ;echo "\n";'
1
[elf @ server elf]$ php -r 'echo 4 === TRUE ;echo "\n";'
ということみたいで, integer が boolean に変換されてから比較される
ようです.ちなみに
[elf @ server elf]$ php -r 'echo TRUE + 1;'
2
だったりするので,演算子によってどちらに変換されるのか意識しないと
ハマる瞬間が出てくるかもしれません.
#スカラー変換嫌い
>まぁ通常はこういう書き方はしないでしょうが。普通に
成功を TRUE で比較するコーディングが普通でごめんなさい(苦笑 なので
一瞬ビビった.
--
----.----1----.----2----.----3----.----4----.----5----.----6----.----7
Tadashi Jokagi/Setagaya city mailto:elf @ elf.no-ip.org
Fedora JP Project http://fedora.jp/
Fedora Project http://fedora.redhat.com/
Fedora and Red Hat are registered trademarks of Red Hat Inc.
PHP-users メーリングリストの案内