質問

foreach インデックスを見つけることは可能ですか?

次のように

for for ループで:

for ($i = 0; $i < 10; ++$i) {
   echo $i . ' ';
}

$ i はインデックスを提供します。

for ループを使用する必要がありますか、それとも foreach ループでインデックスを取得する方法がありますか?

役に立ちましたか?

解決

foreach($array as $key=>$value) {
    // do stuff
}

$ key は、各 $ array 要素のインデックスです

他のヒント

各ランスルーでインクリメントされるフィールドなど、 foreach にハックを入れることができます。インデックス付き配列。このようなフィールドは、手動管理(増分など)が必要な疑似インデックスになります。

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) { ... }

eg

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 ($assoc_array as $key => $value) {
 //do something
}

これは、非連想配列でも正常に機能します。 $ keyはインデックス値になります。必要に応じて、これも実行できます。

foreach ($array as $indx => $value) {
  //do something
}

これを追加したいのですが、これをlaravelで使用してテーブルのインデックスを作成しました:

  • $ loop-&gt; indexを使用
  • また、1から開始するために++ $ loopでプリインクリメントします

マイコード:

@foreach($resultsPerCountry->first()->studies as $result)
  <tr>
    <td>{{ ++$loop->index}}</td>                                    
  </tr>
@endforeach
foreach(array_keys($array) as $key) {
//  do stuff
}
foreach($arrvariable as $key=>$value){
echo "$key";
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top