2

ここにコード(php 5.3.5および5.2.13で実行):

$res = array(1, 2, 3);

unset($res[0]);

for($i = 0; $i < sizeof($res); $i++)
{
  echo $res[$i] . '<br />';
}

結果で私は見る

<br />2<br />

なぜ1つの要素だけで、最初は空ですか?わからない。行うとき:

print_r($res);

見る:

Array ( [1] => 2 [2] => 3 )

助けてくれてありがとう!

4

5 に答える 5

8

$i = 0;これは、新しい最初のインデックスである1ではなく開始するためです。サイズが2に縮小されたため、2番目(以前は3番目)の要素の前で停止したため、最後の要素が欠落しています。これにより、希望する結果が得られるはずです。

foreach($res as $value) {
    echo $value . '<br />';
}
于 2011-03-25T21:33:46.407 に答える
3

PHPは、未設定のキーを再配置しません。設定解除後のキーはと1です2。forサイクルで、との値をi取得します。このスニペットを使用して、配列の最初のキーであるに初期化する必要があります。01i1

ヒント1:foreachを使用して、配列を反復処理します。
ヒント2:エイリアスは使用しないでください。sizeofのcountinstadを使用します。

于 2011-03-25T21:36:14.380 に答える
2

unsetsizeof array=2の後

そして基本的error_reporting(E_ALL)に開発に使用し、それはあなたを助けます

于 2011-03-25T21:33:46.673 に答える
1

設定を解除すると、sizeof()が2を返すため、これは期待どおりに機能しません。したがって、0から2未満(別名1)でループしています。

したがって、0で要素の設定を解除したため、インデックス1の要素のみが表示されます。

これに対する簡単な修正は、foreachループを使用することです。

foreach($res as $value){
    echo $value .'<br />';
}
于 2011-03-25T21:35:27.870 に答える
1

これは2回繰り返され、最初は設定を解除したインデックス0にアクセスし、2回目は出力されたものであるインデックス1にアクセスします。要素は2つしかありませんが、インデックス1と2では、元のインデックスから開始しています。

于 2011-03-25T21:36:31.060 に答える