3

だから私はこれを理解しようとして2時間を費やし、問題を切り分けるためにコードを可能な限り最小限に抑えましたが、これを理解することはできません.

だから私はこのコードを持っています:

$arr['key']['name'] = array("one", "two", "three");

$counter = 0;
do
{
    $cur = current($arr);

    $k = key($arr['key']['name']);
    next($arr['key']['name']);
}while($k !== null);

これは終わりのないループです。何らかの理由で、すべての $arr['key']['name'] 値を調べた後、key() は NULL を返す代わりに、再び 0 に戻ります。$cur = current($arr); の削除 しかし、その問題を解決します。php manualによるとcurrent()、配列ポインタにはまったく影響しません。これで、配列をコピーするとそのポインターがリセットされることがわかりましたが、コピーは行われず、$k があった場合、0 から 2 に移動してから 0 にリセットするのではなく、常にゼロになります。

4

2 に答える 2

4

current() は、使用する配列の配列ポインターを移動しませんが、の配列で使用しています。ネストされた配列のポインターをリセットしています。

于 2012-04-10T04:55:38.610 に答える
2

このようにしてみませんか?

コード :

foreach ($arr['key']['name'] as $k)
{
    // do something with $k

}
于 2012-04-10T04:54:01.570 に答える