データベース呼び出しがあり、$key => $value
がforeach
ループで何をするかを理解しようとしています。
私が尋ねる理由は、これらのコードは両方とも同じものを出力するためです。そのため、このように書かれている理由を理解しようとしています。コードは次のとおりです。
foreach($featured as $key => $value){
echo $value['name'];
}
これは次と同じ出力をします:
foreach($featured as $value) {
echo $value['name']
}
だから私の質問は、$key => $value
とforeach
ループの$value
の違いは何ですか。それが違いを生む場合、配列は多次元です。foreach
ループで$key
を$value
に渡す理由を知りたいだけです。
さて、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
にすると、それらの意味を追跡するのに役立ちます。
次のような連想配列があるとしましょう:
$a = array(
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => array('x'=>123)
);
最初の反復:$key="one"
および$value=1
。
値が必要な場合は、このキーが必要になることがありますが、使用を避けることができます。
最後の反復では$key='seventeen'
および$value = array('x'=>123)
なので、このarray
値の最初の要素の値を取得するには、key
、この場合はxが必要です:$value['x'] =123
。
非常に重要な場所必須foreach
ループでkey => value
ペアを使用することに言及してください。 $features
配列の既存のアイテム(別のキー)にnew/sub-要素を追加するとします。次のことを行う必要があります。
foreach($features as $key => $feature) {
$features[$key]['new_key'] = 'new value';
}
これの代わりに:
foreach($features as $feature) {
$feature['new_key'] = 'new value';
}
ここでのbigの違いは、最初のケースではkeyを使用してメイン配列自体を介して配列のサブ値にアクセスしていることです配列ポインタが現在指している要素。
2番目(はこの目的には機能しません)が、配列内のサブ値を一時変数$feature
に割り当てています。ループ反復。
違いは
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)
で同じことをすることはできません。したがって、必要なときにキーを操作する便利な方法として上記の形式を検討してください。
乾杯
次のような配列があるとします:
$array = (0=>'123',1=>'abc','test'=>'hi there!')
Foreachループでは、各ループは次のようになります。
$key = 0, $value = '123'
$key = 1, $value = 'abc'
$key = 'test', $value = 'hi there!'
配列キーを知る必要がある場合に最適です。
配列が次のように見える場合:
$ keyは各配列値(オレンジ、バナナまたはニンジン)のタイプ(果物または野菜)を保持します
ここに$ keyに含まれる$ key$ value in $ featuredに関連付けられています。違いは、そのキーを手に入れたことです。
array("thekey"=>array("name"=>"joe"))
ここ$ valueは
array("name"=>"joe")
$ keyは「thekey」です