PHP foreach 루프 키 값


136

다차원 배열을 얻기 위해이 DB 호출을 실행하고 있습니다. 각 키를 얻으려고하지만 빈 또는 배열로 시도 할 때.

$root_array = array();
$sites = $this->sites($member_id);
foreach ($sites as $site){
    $records = $this->db->select('p.name as place_name, p.id as place_id,p.active as place_status')
                ->from('places p')
                ->join('members_permissions pm','pm.sites_id = p.sites_id and pm.members_id ='.$member_id)
                ->where('p.active', 0)
                ->get();

    $places = $records->result_array();
    $places['name'] = $site['name'];
    foreach($places as $place){
       $root_array[$site['name']][] = $place;
    }

}
return $root_array;

반복되는 내 PHP는 다음과 같습니다.

<?php foreach($places as $site): ?>
    <h5><?=key($site)?></h5>
        <?php foreach($site as $place): ?>
            <h6><?=$place['place_name']?></h6>
        <?php endforeach?>

<?php endforeach ?>

또한 배열을 뱉어내는 테스트를 실행할 때 이것이 결과입니다. 렌더링하려고하는 것은 [필라델피아]입니다.

[Philadelphia] => Array
        (
            [0] => Array
                (
                    [place_name] => XYX
                    [place_id] => 103200
                    [place_status] => 0
                )

            [1] => Array
                (
                [place_name] => YYYY
                [place_id] => 232323
                [place_status] => 0
            )

답변:


382

다음과 같이 배열 키에 액세스 할 수 있습니다.

foreach ($array as $key => $value)

이 방법만을 반환 '배열'
matthewb

만약 $ key를 반향한다면? 아냐 Philadelphia키인 배열에서 실행하면 안됩니다 . 코드를 보여줄 수 있습니까?
Pekka

이것은 작동하지만 mysql 문에도 사소한 문제가 있었지만 솔루션과 함께 작동했습니다. 감사합니다.
matthewb 2009

32

Pekka가 위에서 언급했듯이

foreach ($array as $key => $value)

또한 재귀 함수를 시도 할 수 있습니다

displayRecursiveResults($site);

function displayRecursiveResults($arrayObject) {
    foreach($arrayObject as $key=>$data) {
        if(is_array($data)) {
            displayRecursiveResults($data);
        } elseif(is_object($data)) {
            displayRecursiveResults($data);
        } else {
            echo "Key: ".$key." Data: ".$data."<br />";
        }
    }
}

8

을 사용할 수도 있습니다 array_keys(). 친절한 초보자 :

$keys      = array_keys($arrayToWalk);
$arraySize = count($arrayToWalk);

for( $i=0; $i < $arraySize; $i++ ) {
    echo '<option value="' . $keys[$i] . '">' . $arrayToWalk[$keys[$i]] . '</option>';
}

6
foreach($shipmentarr as $index=>$val){    
    $additionalService = array();

    foreach($additionalService[$index] as $key => $value) {

        array_push($additionalService,$value);

    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.