【问题标题】:PHP extract Multidimensional Associative Array Keys as TextPHP将多维关联数组键提取为文本
【发布时间】:2014-01-06 01:55:39
【问题描述】:

使用基本的关联数组,例如:

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

感谢

【问题讨论】:

    标签: php multidimensional-array foreach key


    【解决方案1】:
    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)
    

    【讨论】:

    • 酷...但是有点矫枉过正。不过还是谢谢
    【解决方案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"
    

    【讨论】:

    • 不,它并不完美,如果问题是在谈论“多维”,那么它甚至可能是一个错误的答案。它只满足 2 层深度。 Nightmare 的答案更正确。
    【解决方案3】:

    您可以像这样遍历内部数组的值:

    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);
        }
    }
    

    【讨论】:

    • 您的建议甚至打印出他们的价值观...我想要类似:string 'First' (length=5) int 0 string 'Third' (length=5) 没有他们的价值观。
    • 没有他们的价值观是什么意思?您可以从数组中获得的唯一其他东西是它的键,在这种情况下您只需将 $v 更改为 $k。
    【解决方案4】:
    $arr = array(
        0 => array("First" => 1, "Two", "Third" => "Three")
    );
    
    foreach ($arr as $key => $value)
    {
        foreach ($value as $k => $v)
        {
            var_dump($k);
        }
    }
    

    【讨论】:

      【解决方案5】:

      您可以像这样访问多维数组键和索引:

      $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 不是必需的。

      【讨论】:

      • 酷...虽然它可以使初学者流鼻血!... llz
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 2015-10-25
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多