PHP giá trị khóa vòng lặp foreach


135

Tôi đang chạy cuộc gọi DB này để nhận cho tôi mảng đa chiều Tôi đang cố gắng lấy các khóa của từng mảng nhưng khi tôi thử nó xuất hiện trống hoặc dưới dạng mảng.

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

Đây là php của tôi mà vòng lặp thông qua:

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

<?php endforeach ?>

Ngoài ra, khi tôi chạy một bài kiểm tra vừa phát ra mảng thì đây là kết quả, Điều tôi đang cố gắng kết xuất là [Philadelphia]

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

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

Câu trả lời:


381

Bạn có thể truy cập các khóa mảng của mình như vậy:

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

Phương thức này chỉ trả về 'mảng'
matthewb

Điều gì, nếu bạn lặp lại khóa $? Không Không phải nếu bạn chạy nó trên mảng đó Philadelphialà một chìa khóa của. Bạn có thể hiển thị một số mã?
Pekka

Điều này hoạt động, tuyên bố mysql của tôi cũng có một vấn đề nhỏ nhưng tôi đã làm cho nó hoạt động với giải pháp của bạn, cảm ơn bạn.
matthewb

32

Như Pekka đã nói ở trên

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

Ngoài ra, bạn có thể muốn thử một hàm đệ quy

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

Bạn cũng có thể sử dụng array_keys(). Người mới thân thiện:

$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);

    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.