foreach
インデックスを見つけることは可能ですか?
次のようにfor
ループで。
for ($i = 0; $i < 10; ++$i) {
echo $i . ' ';
}
$i
はあなたにインデックスを与えるでしょう。
for
ループを使用する必要がありますか、それともforeach
ループでインデックスを取得する方法がありますか。
foreach($array as $key=>$value) {
// do stuff
}
$key
は各$array
要素のインデックスです
foreach
name__にハックを入れることができます。たとえば、各実行時にフィールドがインクリメントされます。これは、for
name__ループによって数値インデックス配列で得られるものです。そのようなフィールドは、手動管理(増分など)を必要とする疑似索引になります。
foreach
name__はあなたの$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;
}
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ループを使用してください。
私は最良の選択肢は同じようだと思います:
foreach ($lists as $key=>$value) {
echo $key+1;
}
それは簡単で普通です
私はこれを追加したいのですが、私は自分のテーブルにインデックスを付けるためだけにこれを使用しました。
私のコード:
@foreach($resultsPerCountry->first()->studies as $result)
<tr>
<td>{{ ++$loop->index}}</td>
</tr>
@endforeach
foreach(array_keys($array) as $key) {
// do stuff
}
連想配列を扱うときは、通常これを行います。
foreach ($assoc_array as $key => $value) {
//do something
}
これは非連想配列でもうまく動作します。 $ keyがインデックス値になります。お望みなら、これもできます。
foreach ($array as $indx => $value) {
//do something
}