$arr = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);例cからループさせたいのですが、どうやって書けばいいでしょうか?
ディスカッション (解決策) への返信
これであなたの望みを達成できますか?配列のキー名を取得し、キー名が c と等しい場合にのみループに入ります。
もっと詳しく教えてもらえますか?
foreach($arr1 as $key=>$val){
echo $key.'='.$val. '
'
}
$arr = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, " e"=>5);
foreach($arr1 as $key=>$val){
echo $key.'='.$val.'
';
}
ただし、この添字は必ずしも 2 番目の位置にあるとは限りません。あるいは、c の前に 10 が来る場合もあれば、100 が来る場合もあります。
上の人の言うことは良いことです。 。
実際、#5 の考えは正しいです。つまり、一度トラバースし、指定されたキーが表示される前にデータを処理しません
$arr = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);$flag = 0;foreach($arr as $key=>$val){ if($key=='c'){ $flag = 1; } if($flag==1){ echo $key.'='.$val.'<br>'; }}
このように書かれています、より合理的です
$arr = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);$index = array_search('c',array_keys($arr));$arr1 = array_slice($arr, $index);foreach($arr1 as $key=>$val){ echo $key.'='.$val.'<br>';}
$arr = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);$flag = false;foreach($arr as $key=>$val){ if(! ($flag = $flag ? $flag : $key == 'c')) continue; echo $key.'='.$val.'<br>';}
キー名に基づいて配列内の位置ポインタを取得する方法はありますか
ループするときはポインタから直接スタート最初からたどるのは時間の無駄、foreachでコピーを作成して不要なメモリに適用
6階と9階のコードはとても良いですが、アセンブリを使用していますと C++ でコアコードを表現します... 夕食後、PHP マニュアルを勉強してください
の配列関数
$arr = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);foreach($arr as $key=>$val){ if(! ($flag = $key == 'c' ? true : !empty($flag))) continue; echo $key.'='.$val.'<br>';}
明らかに
foreach はコピーを作成し、不要なメモリ
を割り当てます
キー名に基づいて配列内のデータを取得する方法はありますか? 位置ポインター はループするときにポインターから直接開始します
最初からたどるのは時間の無駄であり、foreach はコピーを作成して適用します不要な記憶のために
6階と9階のコードはとても良いですが、コアコードの強迫性障害をアセンブリとC++を使用して表現しました...
夕食後、PHPマニュアルで配列関数を勉強してください
キー名に基づいて配列内の位置ポインターを取得する方法はありますか? ループを実行するときは、ポインターから直接開始します
$a = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);for (;;next($a)) { if ( key($a) == 'c' ) { while (list($key, $val) = each($a)) { echo "$key => $val<br />"; } break; }}
明らかに
foreach はコピーを作成して不要なメモリを適用します
それは間違っています
私を正してくれたxu...私がちょうど勉強していたときにそれは考えられていますforeach は元の配列を直接ループしますが、Foreach はコピーをコピーしてからそれを走査するものであることがわかりました。$value のコピーを作成してもメモリは更新されません。詳しく見ていきます
$i = $v = 0;echo memory_get_usage(), PHP_EOL;$a = array(1,2,3,4,5,6,7);echo memory_get_usage(), PHP_EOL;foreach($a as $i=>$v) { echo $i, ' ', memory_get_usage(), PHP_EOL; break;}echo memory_get_usage(), PHP_EOL;
明らかに
foreach はコピーを作成し、不要なメモリを適用しました
これは間違っています
間違いを犯したことに気づきました...
$i = $v = 0;echo memory_get_usage(), PHP_EOL;$a = array(1,2,3,4,5,6,7);echo memory_get_usage(), PHP_EOL;foreach($a as $i=>$v) { echo $i, ' ', memory_get_usage(), PHP_EOL; break;}echo memory_get_usage(), PHP_EOL;
私はそれを学び、いくつかの配列関数の使用法を理解しました
あなたは再びここに来て、私はすでにレベル 3 です