65

$key => $valueデータベース呼び出しがあり、foreachループで何をするかを理解しようとしています。

私が尋ねる理由は、これらのコードは両方とも同じものを出力するためです。なぜこのように書かれているのかを理解しようとしています. コードは次のとおりです。

1) foreach 使用時$key => $value

foreach($featured as $key => $value){
  echo $value['name'];
}

これは次のように出力されます。

2) foreach でのみ使用$value

foreach($featured as $value) {
  echo $value['name'];
}

$key => $valueだから私の質問は、ループ内またはループ$value内の違いは何foreachですか。それが違いを生む場合、配列は多次元です。ループで渡す理由$keyを知りたいだけです。$valueforeach

4

8 に答える 8

89

foreach$key => $valueループの は、連想配列のキーと値のペアを参照します。キーは、0、1、2 などの数値ではなく、値を決定するためのインデックスとして機能します。PHP では、連想配列は次のようになります。これ:

$featured = array('key1' => 'value1', 'key2' => 'value2', etc.);

PHP コードでは:$featuredはループされる連想配列でありas $key => $value、ループが実行されて配列からキーと値のペアが選択されるたびに、ローカル$key変数にキーを格納してループ ブロック内で使用し、値をローカル$value変数。したがって、上記の例の配列では、foreach ループは最初のキーと値のペアに到達し、 を指定した場合は変数と変数にas $key => $value格納'key1'されます。$key'value1'$value

ループ ブロック内で変数を使用しないため、$key変数を追加または削除してもループの出力は変わりませんが、連想配列であることを示すためにキーと値のペアを含めることをお勧めします。

また、as $key => $value指定は任意です。これを に置き換えることができas $foo => $bar、ループ ブロック内の変数参照を新しい変数に変更する限り、正常に機能し$fooます$bar。しかし、それらを作成し$key、それら$valueが何を意味するかを追跡するのに役立ちます。

于 2013-08-28T16:01:42.393 に答える
8

違いは、

foreach($featured as $key => $value){
 echo $value['name'];
}

$keyキーと値のペアから各反復の値を操作できます。@djiangoが答えたように、各値を操作していない場合$key、ループの結果はまったく同じになります

foreach($featured as $value) {
  echo $value['name']
}

ソース: PHP ドキュメント から読むことができます:

最初の形式は、array_expression で指定された配列をループします。各反復で、現在の要素の値 > が $value に割り当てられ、内部配列ポインターが >1 ずつ進められます (したがって、次の反復では、次の要素を見ることになります)。

2 番目の形式では、各反復で現在の要素のキーを $key 変数に追加で割り当てます。


操作しているデータがカスタム キーを持つ配列などの場合、次のように画面に出力できます。

$array = ("name" => "Paul", "age" => 23);

foreach($featured as $key => $value){
 echo $key . "->" . $value;
}

印刷する必要があります:

name->Paul

age->23

foreach($featured as $value)そして、同じように簡単にそれを行うことはできません。したがって、必要に応じてキーを操作するための便利な方法として上記の形式を検討してください。

乾杯

于 2014-02-03T21:43:22.293 に答える
4

次のような配列があるとします。

$array = (0=>'123',1=>'abc','test'=>'hi there!')

foreach ループでは、各ループは次のようになります。

$key = 0, $value = '123'
$key = 1, $value = 'abc'
$key = 'test', $value = 'hi there!'

配列キーを知る必要がある場合に最適です。

于 2013-08-28T16:04:06.850 に答える
4

サンプル配列: 左のものはキー、右のものは私の値です

$array = array(
        'key-1' => 'value-1', 
        'key-2' => 'value-2',
        'key-3' => 'value-3',
        );

例 A: の値のみが必要です$array

foreach($array as $value) {    
    echo $value; // Through $value I get first access to 'value-1' then 'value-2' and to 'value-3'     
}

例 B: 各値 AND キーが必要です$array

foreach($array as $key => $value) {                 
    echo $value; // Through $value I get first access to 'value-1' then 'value-2' and to 'value-3'  

    echo $key; // Through $key I get access to 'key-1' then 'key-2' and finally 'key-3'    

    echo $array[$key]; // Accessing the value through $key = Same output as echo $value;
    $array[$key] = $value + 1; // Exmaple usage of $key: Change the value by increasing it by 1            
}
于 2019-12-24T05:27:24.487 に答える
1

ここで、 $key には、 $featuredの$valueに関連付けられた$ keyが含まれます。違いは、その鍵を持っていることです。

array("thekey"=>array("name"=>"joe"))

ここで$value

array("name"=>"joe")

$keyは「キー」です

于 2013-08-28T16:00:22.867 に答える