Valeur de clé de boucle PHP foreach


136

J'exécute cet appel de base de données pour obtenir un tableau multidimensionnel. J'essaie d'obtenir les clés de chacun, mais lorsque j'essaye, il est vide ou sous forme de tableau.

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

voici mon php qui boucle à travers:

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

<?php endforeach ?>

Aussi, quand j'exécute un test qui crache juste le tableau, c'est le résultat, ce que j'essaie de rendre est [Philadelphie]

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

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

Réponses:


382

Vous pouvez accéder à vos clés de tableau comme ceci:

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

Cette méthode ne renvoie que 'array'
matthewb

Et si vous faites écho à $ key? Non. Pas si vous l'exécutez sur le tableau qui Philadelphiaest une clé de. Pouvez-vous montrer du code?
Pekka

Cela fonctionne, ma déclaration mysql avait également un problème mineur mais je l'ai fait fonctionner avec votre solution, merci.
matthewb

32

Comme Pekka l'a déclaré ci-dessus

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

Vous pouvez également essayer une fonction récursive

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

Vous pouvez également utiliser array_keys(). Débutant convivial:

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

    }
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.