2009-12-02 5 views
80

私は多次元配列を取得するためにこのDB呼び出しを実行しています 私はそれぞれのキーを取得しようとしていますが、空でも配列としても試してみます。ここ PHP foreachループキー値

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

はをループ私のPHPです。また

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

<?php endforeach ?> 

私はちょうどこれが結果である配列を吐き出すテストを実行し、[フィラデルフィアは、私は何をレンダリングしようとしている ]

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

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

答えて

229

あなたがそうのようなあなたの配列のキーにアクセスすることができます。

01ペッカは

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

上述したように

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

このメソッドは '配列'を返します – matthewb

+0

$ keyをエコーするとどうなりますか?ナー。あなたが 'フィラデルフィア'がキーである配列でそれを実行するのではありません。いくつかのコードを表示できますか? –

+0

これは動作しますが、私のmysqlステートメントにもマイナーな問題がありましたが、私はあなたのソリューションで作業しています。 – matthewb

18

はまた、あなたは、再帰関数ます。またarray_keys()を使用することができます

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 />"; 
     } 
    } 
} 
5
foreach($shipmentarr as $index=>$val){  
    $additionalService = array(); 

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

     array_push($additionalService,$value); 

    } 
} 
5

をしようとする場合があります。初心者にやさしい:

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