[PHP-users 23524]foreach関数の挙動について
Kamata
kou @ neta.jp
2004年 10月 30日 (土) 03:59:57 JST
はじめまして、鎌田といいます。
本日、コーディング中に以下のような現象に遭遇しました。
どう調べても挙動がおかしい気がします。
自分ではどうしても解決できなかったので、アドバイスいただけると幸いです。
例えば以下のようなプログラムを実行すると、
---ソース---------------------------------------------
1 $a = array("0"=>"あああ","1"=>"いいい","2"=>"ううう");
2 $b = "abc";
3
4 foreach ($a as $key => $value) {
5
6 if($key == $b){
7 echo "{$key}と{$b}は一緒<br>\n";
8 }else{
9 echo "{$key}と{$b}は違う<br>\n";
10 }
11 }
----------------------------------------------------
以下のように出力されます。
---出力結果-----------------------------------------
0とabcは一緒
1とabcは違う
2とabcは違う
----------------------------------------------------
6行目、$key が 0 の時に $key==$b がTRUEになる理由が分かりません。
実は、1行目を、
$a = array("1"=>"あああ","2"=>"いいい","3"=>"ううう");
など、0以外をkeyにして配列を作ると、予想した結果が出ることが分かったので
すが、根本的な解決じゃない気がしてすっきりしないのです。
上記のソースを実行し、以下のような結果を出すことはできないでしょうか?
0とabcは違う
1とabcは違う
2とabcは違う
以上よろしくお願いいたします。
・以下の環境で試しました。
RedHat8 Apache/1.3.27 PHP/4.3.4
RedHatES3 Apache/2.0.50 PHP/4.3.8
FreeBSD Apache/1.3.29 PHP/4.2.4-dev
鎌田 kou @ neta.jp
PHP-users メーリングリストの案内