【问题标题】:how to add headers to other php arrays如何将标头添加到其他 php 数组
【发布时间】:2013-07-02 18:18:28
【问题描述】:

这是原始数组:

Array
(
    [0] => Array
        (
            [0] => ID
            [1] => NAME
            [2] => GROUP
        )

    [1] => Array
        (
            [0] => 1221
            [1] => 500
            [2] => 2
        )
    [2] => Array
        (
            [0] => 1654
            [1] => 33
            [2] => 23
        )
)

将其转换为:

Array
(
    [0] => Array
        (
            [ID]    => 1221
            [NAME]  => 500
            [GROUP] => 2
        )
    [1] => Array
        (
            [ID]    => 1654
            [NAME]  => 33
            [GROUP] => 23
        )
)

当然有超过 3 个标题和超过 2 个数据数组。有没有一种自动的方法可以高效、干净地执行此操作?

【问题讨论】:

  • array_combine() 会这样做,但您需要遍历数组并为每个元素调用它。

标签: php arrays sorting data-structures


【解决方案1】:

你可以试试:

$keys = array_shift($data);
$data = array_map(function ($v) use($keys) {
    return array_combine($keys, $v);
}, $data);

print_r($data);

Live DEMO

【讨论】:

    【解决方案2】:
    $header = $array[0];
    $newarray = array();
    for($i = 1; $i<count($array); $i++) {
        $newarray[$i-1] = array();
        foreach($header as $k => $v) {
            $newarray[$i-1][$v] = $array[$i][$k];
        }
    }
    
    
    print_r($newarray);
    

    【讨论】:

      【解决方案3】:

      我对这个问题的回答是使用 PHP 内置函数,例如 array_valuesarray_fillarray_combinearray_map

      工作示例http://phpfiddle.org/lite/code/zdw-v9k

      function array_mapper($keys, $record) {
          return array_combine($keys, $record);
      }
      
      $key = array_values(array_shift($arr));
      $keys = array_fill(0, count($arr), $key);
      $res = array_map('array_mapper', $keys, $arr);
      
      print_r($res);
      

      【讨论】:

        猜你喜欢
        • 2019-04-04
        • 1970-01-01
        • 1970-01-01
        • 2014-11-05
        • 2012-04-02
        • 2020-11-21
        • 2011-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多