PHP foreach nilai kunci loop


136

Saya menjalankan panggilan DB ini untuk membuat saya array multi-dimensi Saya mencoba untuk mendapatkan kunci masing-masing tetapi ketika saya mencoba muncul kosong atau sebagai array.

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

di sini adalah php saya yang loop melalui:

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

<?php endforeach ?>

Juga ketika saya menjalankan tes yang hanya memuntahkan array ini hasilnya, Apa yang saya coba render adalah [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
            )

Jawaban:


382

Anda dapat mengakses kunci larik seperti:

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

Metode ini hanya mengembalikan 'array'
matthewb

Bagaimana, jika Anda menggema $ key? Tidak Tidak jika Anda menjalankannya pada array yang Philadelphiamerupakan kunci. Bisakah Anda menunjukkan beberapa kode?
Pekka

Ini berfungsi, pernyataan mysql saya punya masalah kecil juga tapi saya berhasil bekerja dengan solusi Anda, terima kasih.
matthewb

32

Seperti yang Pekka nyatakan di atas

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

Anda juga mungkin ingin mencoba fungsi rekursif

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

Anda juga bisa menggunakan array_keys(). Ramah pemula:

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

    }
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.