2013-12-18 49 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); 
    } 
}