1

このコードを検討してください

var_export ($dates);
while (list($key, $date) = each($dates))
{
    echo("current = ".current($dates));
    echo("key = " . key($dates));
}

結果は

Array
(
    [1359928800] => 1359928800
)

current =
key = 

私はそれが返されるはずだと思っていましたが1359928800、どこが間違っていますか?

4

3 に答える 3

7

配列を操作する場合、反復を処理するための古語の少ない構造があります:foreach(ドキュメントはこちら)。

この方法でアレイを反復処理することをお勧めします。読みやすく、間違えることはほぼ不可能です。さらに、ここでの注意で述べたように、無限ループに陥る可能性について心配する必要はありません。

<?php
var_export($dates);
foreach($dates as $key => $value) {
    echo("current = ".$value);
    echo("key = ".$key);
}
于 2013-02-05T21:22:11.243 に答える
0

$keyとを利用してみません$dateか?

while (list($key, $date) = each($dates))
{
    echo("current = ".$date); // 1359928800
    echo("key = " . $key); // 1359928800
}
于 2013-02-05T21:19:08.573 に答える
0

その理由は、eachすでにポインターを進めているためです。

ドキュメントには次のように記載されています。

配列から現​​在のキーと値のペアを返し、配列カーソルを進めます。

したがって、ループ内は次の要素currentを参照します。あなたの場合、次の要素がないため、. すでに提案されているように、 andまたはより良い方法でを使用する必要があります。false$key$dateforeach

于 2013-02-06T09:55:53.753 に答える