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