[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 メーリングリストの案内