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
            )
matthewb
sumber

Jawaban:

382

Anda dapat mengakses kunci larik seperti:

foreach ($array as $key => $value)
Pekka
sumber
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 />";
        }
    }
}
Phill Pafford
sumber
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>';
}
Melih Yıldız '
sumber
6
foreach($shipmentarr as $index=>$val){    
    $additionalService = array();

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

        array_push($additionalService,$value);

    }
}
kumar
sumber