program tip

PHP foreach에서 "as $ key => $ value"와 "as $ value"의 차이점

radiobox 2021. 1. 11. 07:56
반응형

PHP foreach에서 "as $ key => $ value"와 "as $ value"의 차이점


나는 데이터베이스 호출이 있고 루프 $key => $value에서 무엇을하는지 알아 내려고 노력하고 foreach있습니다.

내가 묻는 이유는이 두 코드가 동일한 결과를 출력하기 때문입니다. 그래서 왜 이렇게 작성되었는지 이해하려고 노력하고 있습니다. 코드는 다음과 같습니다.

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

다음과 같이 출력됩니다.

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

내 질문은 그래서, 차이 무엇 $key => $value하거나 $valueforeach루프. 그 차이를 만드는 경우 배열은 그냥 통과하는 이유를 알고 싶어, 다차원 $key$valueforeach루프.


그래서, $key => $valueforeach는 루프 인덱스와 키가 게재 대신 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.


이되는 매우 중요한 장소 필수 사용하기 key => value에 쌍 foreach루프는 언급 될 것입니다. 배열 의 기존 항목 ( 다른 키에 있음 )에 새 / 하위 요소 를 추가한다고 가정합니다 . 다음을 수행해야합니다.$features

foreach($features as $key => $feature) {
    $features[$key]['new_key'] = 'new value';  
} 


대신 :

foreach($features as $feature) {
    $feature['new_key'] = 'new value';  
} 

여기서 차이점은 첫 번째 경우에는 현재 배열 포인터가 가리키는 요소에 대한 사용하여 기본 배열 자체를 통해 배열의 하위 값에 액세스한다는 것입니다 .

두 번째 ( 이 목적으로 작동하지 않음 )에서는 배열의 하위 값을 $feature각 루프 반복 후에 설정되지 않는 임시 변수에 할당합니다 .


차이점은

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

$key키-값 쌍에서 각 반복의 값을 조작 할 수 있습니다. @djiango가 대답했듯이 각 값을 조작하지 않으면 $key루프의 결과는 다음과 정확히 동일합니다.

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

출처 : PHP 문서 에서 읽을 수 있습니다 .

첫 번째 양식은 array_expression으로 지정된 배열을 반복합니다. 각 반복에서 현재 요소의 값>은 $ value에 할당되고 내부 배열 포인터는> 1만큼 전진합니다 (따라서 다음 반복에서 다음 요소를 보게됩니다). *

The second form will additionally assign the current element's key to the $key variable on >each iteration.


If the data you are manipulating is, say, arrays with custom keys, you could print them to screen like so:

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

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

Should print:

name->Paul

age->23

And you wouldn't be able to do that with a foreach($featured as $value) with the same ease. So consider the format above a convenient way to manipulate keys when needed.

Cheers


Say you have an array like this:

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

In your foreach loop, each loop would be:

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

It's great for those times when you need to know the array key.


if the array looks like:

  • $featured["fruit"] = "orange";
  • $featured["fruit"] = "banana";
  • $featured["vegetable"] = "carrot";

the $key will hold the type (fruit or vegetable) for each array value (orange, banana or carrot)


here $key will contain the $key associated with $value in $featured. The difference is that now you have that key.

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

here $value is

array("name"=>"joe")

$key is "thekey"

ReferenceURL : https://stackoverflow.com/questions/18492784/difference-between-as-key-value-and-as-value-in-php-foreach

반응형