답변:
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++;
}
key()
모든 배열을 호출 하여 현재 키를 찾을 수 있습니다. 짐작할 수 있듯이 current()
현재 값을 반환 next()
하고 배열의 포인터를 다음 요소로 이동합니다.
$key
from $key=>$value
)를 사용하는 것보다 약간 무겁습니다 . 그러나 낮은 루프 성능은 중요하지 않습니다 / 간단한 루프에서는 허용됩니다.
이 두 개의 루프는 동일합니다 (물론 안전 난간을 막음) :
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 링크 참조) 두 번째 for
루프는 예상 결과를 출력합니다.
나는 일반적으로 연관 배열로 작업 할 때 이것을 수행합니다.
foreach ($assoc_array as $key => $value) {
//do something
}
이것은 비 연관 배열에서도 잘 작동합니다. $ key가 색인 값이됩니다. 원하는 경우 다음을 수행 할 수도 있습니다.
foreach ($array as $indx => $value) {
//do something
}
이것을 추가하고 싶습니다. 라 라벨에서 이것을 사용하여 테이블을 색인화했습니다.
내 코드 :
@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
}