[PHP-users 20466]PHP3とPHP4の違いについて

s_momo2 s_momo2 @ hotmail.com
2004年 2月 19日 (木) 19:32:07 JST


いつもお世話になっております。

環境
PHP3:3.0.18-i18n-ja-2
PHP4:4.3.3

PHP3からPHP4へ移行したのですが、
どうも納得(理解できない)のいかない違いがあります。

以下のような配列があった場合
$testarry[] = array( AAA => 'h' , BBB => 'a' , CCC => 'c' );
$testarry[] = array( AAA => 'i' , BBB => 'b' , CCC => 'c' );
$testarry[] = array( AAA => 'j' , BBB => 'c' , CCC => 'c' );
$testarry[] = array( AAA => 'k' , BBB => 'd' , CCC => 'c' );
$testarry[] = array( AAA => 'l' , BBB => 'e' , CCC => 'c' );

---------------------------------------------------------
for( $i=0; $i < count($testarry); $i++ ) {
	echo $testarry[$i]["AAA"];
  	echo $i."<br>";
} 

echo "<br>COUNT".count($testarry)."<br>";

unset($testarry[1]);

echo "<br>COUNT".count($testarry)."<br>";

reset($testarry);

for( $i=0; $i < count($testarry); $i++ ) {
	echo $testarry[$i]["AAA"];
  	echo $i."<br>";
} 
---------------------------------------------------------
というソースをそれぞれで実行すると、
PHP3では
---------------------------------------------------------
h0
i1
j2
k3
l4

COUNT5

COUNT4
h0
1
j2
k3
l4
---------------------------------------------------------
となり、PHP4では、
---------------------------------------------------------
h0
i1
j2
k3
l4

COUNT5

COUNT4
h0
1
j2
k3
---------------------------------------------------------
となってしまい、最後の「l4」が表示されません。
PHP4の方が正しいように思うのですが、
PHP3では、なぜ表示されるのでしょうか。
unsetは、PHP4では、廃止された関数に入っていますが、
動きは変わらないとマニュアルにありました。
とりあえずCOUNTの値が変わらないように、変数に入れ、
問題は解決したのですが、何が原因かいまいちわからず、
気持ちがわるいので、ご教授願います。
よろしくお願い致します。

-- 
s_momo2 <s_momo2 @ hotmail.com>




PHP-users メーリングリストの案内