2013-12-18 45 views
1

有了一個基本的關聯數組,如:PHP提取多維關聯數組鍵爲文本

$ar = array("First" => 1, "Second" , "Third" =>"Three"); 

如果你這樣做:

foreach($ar as $key => $val) { 

    var_dump($key); 

} 

這將產生:

string 'First' (length=5) 

int 0 

string 'Third' (length=5) 

你如何在多維數組中實現相同的結果?

喜歡的東西:

array(0 => array(
      "First" => 1, "Two", "Third" => "Three" 
       ) 
    ); 

我想:

foreach($ar as $k => $v){ 

     var_dump($ar[0][$k]); 
     } 

我:

string 'Two' (length=3) 

相反的:

string 'First' (length=5) 

    int 0 

    string 'Third' (length=5) 

感謝名單

回答

2

如果$ AR等於這樣的:

array(0 => array(
     "First" => 1, "Two", "Third" => "Three" 
      ) 
); 

你可以遍歷內部陣列上得到同樣的結果:

foreach ($ar as $k => $v) { 
    foreach ($v as $k2 => $v2) { 
      var_dump($k2); 
    } 
} 

輸出:

string(5) "First" 
    int(0) 
string(5) "Third" 
+1

WORKED_like_Perfect ....我接受這個。 +1(爲簡單起見)(K.I.S.S) –

+0

不,它不完美,如果問題在談論「多維」,那麼它甚至可能是一個錯誤的答案。它只是照顧了2層的深度。夢魘的答案是更正確的一種方式。 –

1

你可以像這樣遍歷內部數組的值:

foreach($ar[0] as $k => $v){ 
    var_dump($v); 
} 

與你的問題是,你只是循環ar數組中的1個元素,然後將該數字應用到它內部的數組。

如果你也想要做在兩個水平上同樣的事情,你需要另一個foreach循環,像這樣:

foreach($ar as $k => $v){ 
    foreach($v as $k => $n){ 
     var_dump($n); 
    } 
} 
+0

你的建議,甚至打印自己的價值觀......我想是這樣的: '串「第一」(長度= 5) INT 0 字符串「三」(長度= 5)'沒有他們的值。 –

+0

沒有他們的價值是什麼意思?你可以從數組中獲得的唯一的其他東西是它的關鍵,在這種情況下你只需將$ v更改爲$ k即可。 – lemondrop

2
function get_key(&$arr){ 
    foreach($arr as $key=>$value){ 
     if(is_array($value)){ 
      get_key($value); 
     }else{ 
      var_dump($key); 
     } 
    } 
} 
$arr = array(
    'key1'=>array('a'=>1,'b'=>2), 
    'key2'=>array('c'=>1,2), 
); 
get_key($arr); 

輸出:

string(1) "a" 
string(1) "b" 
string(1) "c" 
int(0) 
+0

酷...但有點矯枉過正。 Thanx雖然 –

1

您可以訪問多維數組鍵和索引如下:

$ary = array('whatever' => array('First' => 1, 'Two', 'Third' => 'Three'), 
    array('something' => array('cool' => 'yes', 'awesome' => 'super', 'great' => 10) 
); 
foreach($ary as $k => $a){ 
    // $k is each Array key within initial Array 
    foreach($a as $i => $v){ 
    // $i is internal index 
    // $v is internal value 
    } 
} 

注意:

在包含數組的數組中,第一個數組實際上是鍵0下的值,除非將數組指定給鍵,所以您的鍵0不是必需的。

+0

很酷...雖然它可以使一個初學者鼻子出血!... llz –

1
$arr = array(
    0 => array("First" => 1, "Two", "Third" => "Three") 
); 

foreach ($arr as $key => $value) 
{ 
    foreach ($value as $k => $v) 
    { 
     var_dump($k); 
    } 
}