[php] foreach 색인을 찾는 방법은 무엇입니까?

foreach색인 을 찾을 수 있습니까?

A의 for루프는 다음과 같이 :

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

$i 당신에게 색인을 줄 것입니다.

for루프 를 사용해야 foreach합니까, 아니면 루프 에서 인덱스를 가져 오는 방법이 있습니까?



답변

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

$key$array요소 의 색인입니다


답변

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()하고 배열의 포인터를 다음 요소로 이동합니다.


답변

오웬은 정답이 있습니다. 키만 원하고 배열로 작업하는 경우에도 유용 할 수 있습니다.

foreach(array_keys($array) as $key) {
//  do stuff
}


답변

$i루프 외부에서 만들고 루프 $i++의 맨 아래에서 수행 할 수 있습니다 .


답변

이 두 개의 루프는 동일합니다 (물론 안전 난간을 막음) :

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;
}


답변

최선의 선택은 같다고 생각합니다.

foreach ($lists as $key=>$value) {
    echo $key+1;
}

쉽고 일반적으로