【问题标题】:PHP Get the first value of all arrays in a multidimensional array [duplicate]PHP获取多维数组中所有数组的第一个值[重复]
【发布时间】:2012-05-03 13:53:29
【问题描述】:

这是我的多维数组的一部分:

Array ( 
[0] => Array ( [0] => Height [1] => 40 ) 
[1] => Array ( [0] => Weight [1] => 15 ) 
[2] => Array ( [0] => Ctr_Percent [1] => 15 ) 
) 

只打印heightweightctr_percent 的语法是什么?我的意思不是像这样附和它:

echo $array[0][0];
echo $array[1][0];

有没有办法遍历整个多维数组并回显每个子数组的第一个值?

【问题讨论】:

    标签: php multidimensional-array


    【解决方案1】:

    假设你使用 php 5.3:

    $first_elements = array_map(function($i) {
        return $i[0];
    }, $data);
    

    否则你需要实现一个回调函数或者只使用普通的旧foreach

    【讨论】:

    • 我认为应该注意的是,仅当索引 0 恰好是数组中第一个元素的键时才有效。它根本不返回子数组的第一个值,它只返回键为 0 的元素的值,这可能是第一个元素。
    • @Christoph 数字索引数组的索引为 0 的元素在语义上是“子数组的第一个值”。如果嵌套数组没有数字索引 - 谈论它们的“顺序”真的没有多大意义。
    • php 对每个数组都有一个顺序,与它的键无关,例如在 [1=>5,0=>3] 中,数字索引中的数组仍然键 1 是第一个不为零的元素。您将始终使用 foreach 迭代此隐式顺序,而不是按键的排序顺序。没有像 c 语言那样的普通数组。
    【解决方案2】:

    这是一个单行:

    array_map('array_shift', $array);
    

    将返回:

    Array
    (
        [0] => Height
        [1] => Weight
        [2] => Ctr_Percent
    )
    

    还有一个:

    array_combine(array_map('array_shift', $temp), array_map('array_pop', $temp))
    

    将返回:

    Array
    (
        [Height] => 40
        [Weight] => 15
        [Ctr_Percent] => 15
    )
    

    【讨论】:

    • 你是生活的滋味
    【解决方案3】:
    foreach ($main_array as $inner_array){
      echo $inner_array[0] . "\n";
    }
    

    【讨论】:

      【解决方案4】:
      foreach($array as $x) {
         echo $x[0]."\n";
      }
      

      【讨论】:

        【解决方案5】:

        我认为您正在寻找的功能是reset() 例如

        array_map('reset', $array);
        

        foreach ($array as $subarray)
            echo reset($subarray)."\n";
        

        请注意,即使 0 不是数组的第一个索引,这也有效。例如。 $a = [1=>5,0=>3]; echo reset($a); 仍然是 echo 5;

        【讨论】:

          【解决方案6】:

          使用array_walk的最简单方法

                  function getFirstElement(&$val){
                      $val = $val[0];
                  }
                  array_walk($data,'getFirstElement');
          

          现在,如果您像 print_r($data); 这样打印 $data,您将得到如下结果

          Array
          (
             [0] => Height
             [1] => Weight
             [2] => Ctr_Percent
          )
          

          【讨论】:

            【解决方案7】:

            使用array_column:

            $result = array_column($array, 0);
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-04-01
              • 2021-05-07
              • 1970-01-01
              • 2023-03-03
              相关资源
              最近更新 更多