2009-12-02 68 views
80

Tôi đang chạy lệnh gọi hàm DB này để lấy cho tôi mảng đa chiều Tôi đang cố gắng lấy chìa khóa của mỗi lần nhưng khi tôi thử nó xuất hiện trống hoặc làm mảng.Giá trị khóa vòng lặp 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; 

đây là php của tôi mà vòng qua:

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

<?php endforeach ?> 

Ngoài ra khi tôi chạy một thử nghiệm mà chỉ spits ra mảng này là kết quả, Những gì tôi đang cố gắng để render [Philadelphia là ]

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

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

Trả lời

229

bạn có thể truy cập vào các phím mảng của bạn như vậy:

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

Phương thức này chỉ trả về 'mảng' – matthewb

+0

Điều gì, nếu bạn lặp lại $ key? Nah. Không phải nếu bạn chạy nó trên mảng mà 'Philadelphia' là một chìa khóa của. Bạn có thể hiển thị một số mã không? –

+0

Điều này hoạt động, tuyên bố mysql của tôi đã có một vấn đề nhỏ nhưng tôi đã nhận nó làm việc với giải pháp của bạn, cảm ơn bạn. – matthewb

18

Như đã nêu ở trên Pekka

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

Ngoài ra, bạn có thể muốn thử một hàm đệ quy

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

Bạn cũng có thể sử dụng array_keys(). Thân thiện với người mới:

$keys = array_keys($arrayToWalk); 
$arraySize = count($arrayToWalk); 
for($i=0;$i<$arraySize;$i++){ 
    echo "<option value=\"".$keys[$i]."\">".$arrayToWalk[$keys[$i]]."</option>"; 
} 
Các vấn đề liên quan