回答:
foreach($array as $key=>$value) {
// do stuff
}
$key
各$array
要素のインデックスです
$myarr['foo'] = 'bar';
この方法を失敗すると言います
vatiable++;
反復ごとに変数を増やす方が良いと思います。従来の方法ですが、常に機能しています。
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++;
}
$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配列は、キーを値にマッピングするマップテーブルとして機能します。次のように配列が定義されている場合、インデックスを取得できる場合があります。
$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ループを使用します。
$var[] = 10;
(ガイドのPHPリンクを参照)。したがって、2番目のfor
ループは期待される結果を出力します。
私は通常、連想配列を操作するときにこれを行います。
foreach ($assoc_array as $key => $value) {
//do something
}
これは、非連想配列でもうまく機能します。$ keyはインデックス値になります。必要に応じて、これも行うことができます。
foreach ($array as $indx => $value) {
//do something
}
これを追加したいのですが、laravelでこれを使用して、テーブルにインデックスを付けます。
私のコード:
@foreach($resultsPerCountry->first()->studies as $result)
<tr>
<td>{{ ++$loop->index}}</td>
</tr>
@endforeach
$loop
変数は一般的なPHPに要求されるため、使用できません。
同じ方法でforeachインデックスと値を使用する必要があったとき、私はこの方法で解決しました:
$array = array('a', 'b', 'c');
foreach ($array as $letter=>$index) {
echo $letter; //Here $letter content is the actual index
echo $array[$letter]; // echoes the array value
}//foreach
foreach(array_keys($array) as $key) {
// do stuff
}