2012-06-27 33 views
5
Array 
(
    [0] => Array 
     (
      [name] => A 
      [id] => 1 
      [phone] => 416-23-55 
      [Base] => Array 
       (
        [city] => toronto 
       ) 

      [EBase] => Array 
       (
        [city] => North York     
       ) 

      [Qty] => 1 
     ) 

(
    [1] => Array 
     (
      [name] => A 
      [id] => 1 
      [phone] => 416-53-66 
      [Base] => Array 
       (
        [city] => qing 
       ) 

      [EBase] => Array 
       (
        [city] => chong     
       ) 

      [Qty] => 2 
     ) 

) 

Làm cách nào tôi có thể nhận được tất cả giá trị khóa với định dạng "0, tên, id, điện thoại, Cơ sở, thành phố, Ebase, Số lượng"?Cách lấy tất cả khóa trong mảng đa chiều trong php

Cảm ơn bạn!

+3

bắt đầu với một foreach() vòng lặp sẽ là một ý tưởng. –

+0

Bạn sẽ cần phải thực hiện Tìm kiếm Đầu tiên Chiều rộng hoặc Tìm kiếm Đầu tiên Chiều sâu để tìm tất cả các phím trong mảng. Để làm điều đó một cách dễ dàng, bạn sẽ cần phải sử dụng một hàm đệ quy. – Cheesebaron

+0

Đối với mảng chính xác đó '$ keys = array_merge (mảng_keys ($ array), array_keys (current ($ array)));' có lẽ sẽ làm điều đó. Nhưng chúng tôi có thể làm với việc biết chính xác những gì bạn đang cố gắng thực hiện bằng cách làm điều này để cung cấp lời khuyên về ** cách tốt nhất ** để làm điều đó ... – DaveRandom

Trả lời

11

Hãy thử điều này

function array_keys_multi(array $array) 
{ 
    $keys = array(); 

    foreach ($array as $key => $value) { 
     $keys[] = $key; 

     if (is_array($value)) { 
      $keys = array_merge($keys, array_keys_multi($value)); 
     } 
    } 

    return $keys; 
} 
+0

Nó hoạt động tuyệt vời! Cảm ơn bạn! – aje

+0

Điều này không đúng cho các mảng đa chiều. –

4

Nếu bạn không biết kích thước của mảng sẽ là gì, hãy sử dụng hàm đệ quy với vòng lặp foreach tự gọi nếu mỗi $ val là một mảng. Nếu bạn biết kích thước, sau đó chỉ foreach thông qua mỗi kích thước và ghi lại các phím từ mỗi kích thước.

Something như thế này:

<?php 
function getKeysMultidimensional(array $array) 
{ 
    $keys = array(); 
    foreach($array as $key => $value) 
    { 
     $keys[] = $key; 
     if(is_array($value)) { 
      $keys = array_merge($keys, getKeysMultidimensional($value)); 
     } 
    } 

    return $keys; 

} 
Các vấn đề liên quan