foreach
インデックスを見つけることは可能ですか?
次のようにfor
ループします。
for ($i = 0; $i < 10; ++$i) {
echo $i . ' ';
}
$i
インデックスを提供します。
ループを使用するfor
必要がありますか、またはループでインデックスを取得する方法はありforeach
ますか?
foreach($array as $key=>$value) {
// do stuff
}
$key
は各$array
要素のインデックスです
foreach
ランスルーごとにインクリメントされるフィールドなど、にハックを入れることができます。これは、for
ループが数値的にインデックス付けされた配列で提供するものとまったく同じです。このようなフィールドは、手動管理 (インクリメントなど) を必要とする疑似インデックスになります。
Aは値foreach
の形式でインデックスを提供する$key
ため、そのようなハックは必要ありません。
たとえば、foreach
$index = 0;
foreach($data as $key=>$val) {
// Use $key as an index, or...
// ... manage the index this way..
echo "Index is $index\n";
$index++;
}
key()
任意の配列を呼び出して、現在のキーがオンになっていることを確認できることに注意してください。ご想像のとおりcurrent()
、現在の値を返し、next()
配列のポインターを次の要素に移動します。
オーウェンは良い答えを持っています。キーだけが必要で、配列を操作している場合、これも役立つ場合があります。
foreach(array_keys($array) as $key) {
// do stuff
}
$i
ループの外側で作成し、ループ$i++
の下部で実行できます。
これらの 2 つのループは同等です (もちろん、安全柵を禁止します)。
for ($i=0; $i<count($things); $i++) { ... }
foreach ($things as $i=>$thing) { ... }
例えば
for ($i=0; $i<count($things); $i++) {
echo "Thing ".$i." is ".$things[$i];
}
foreach ($things as $i=>$thing) {
echo "Thing ".$i." is ".$thing;
}
最良のオプションは同じだと思います:
foreach ($lists as $key=>$value) {
echo $key+1;
}
それは簡単で普通です
PHP配列には内部ポインターがあるため、これを試してください:
foreach($array as $key => $value){
$index = current($array);
}
私にとっては問題なく動作します(ただし、非常に予備的にテストされているだけです)。
ジョナサンは正しいです。PHP配列は、キーを値にマッピングするマップテーブルとして機能します。場合によっては、配列が定義されている場合にインデックスを取得できます。
$var = array(2,5);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
出力は次のようになります
2
5
この場合、配列内の各要素には既知のインデックスがありますが、次のようなことを行うと
$var = array_push($var,10);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
出力はありません。これは、PHPの配列が、ほとんどの言語のように線形構造ではないために発生します。それらは、格納されているすべての値のキーを持つ場合と持たない場合があるハッシュテーブルに似ています。したがって、foreachは、配列が定義されている場合にのみインデックスを持っているため、インデックスを使用してそれらをクロールしません。インデックスが必要な場合は、配列をクロールする前に配列が完全に定義されていることを確認し、forループを使用してください。
1から始める++$key
代わりに使っています。通常は0から始まります。$key++
@foreach ($quiz->questions as $key => $question)
<h2> Question: {{++$key}}</h2>
<p>{{$question->question}}</p>
@endforeach
出力:
Question: 1
......
Question:2
.....
.
.
.
私は通常、連想配列を操作するときにこれを行います。
foreach ($assoc_array as $key => $value) {
//do something
}
これは、非連想配列でも問題なく機能します。$key はインデックス値になります。必要に応じて、これも実行できます。
foreach ($array as $indx => $value) {
//do something
}