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