171 votes

Valeur clé de la boucle PHP foreach

J'exécute cet appel de base de données pour obtenir un tableau multidimensionnel. J'essaie d'obtenir les clés de chaque mais lorsque j'essaie, il apparaît 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 passe en boucle:

 <?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 je lance un test qui crache le tableau, voici le résultat, ce que j'essaye de rendre, c'est [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
            )
 

473voto

Pekka 웃 Points 249607

Vous pouvez accéder à vos clés de tableau de la manière suivante:

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

43voto

Phill Pafford Points 32046

Comme Pekka a déclaré ci-dessus

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

Aussi, vous voudrez peut-être 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 />";
        }
    }
}
 

14voto

Melih Yıldız' Points 98

Vous pouvez aussi utiliser array_keys() . Débutant amical:

 $keys = array_keys($values);
for($i=0;$i<count($values);$i++){
    echo "<option value=\"".$keys[$i]."\">".$values[$keys[$i]]."</option>";
}
 

9voto

kumar Points 31
foreach($shipmentarr as $index=>$val){    
    $additionalService = array();

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

        array_push($additionalService,$value);

    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X