PHP-使用数组映射将键多维数组更改为数组关联

PHP-使用数组映射将键多维数组更改为数组关联,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,有时,为了在很多php框架上兼容activerecord,我们会创建一个数组,然后为它创建一个临时数组 因此,如果我们不需要创建临时数组,那么就更加优雅。 我最喜欢的是阵列地图。 如果像这样的数组: Array ( [0] => Array ( [0] => 2017-05-19 [1] => HEUNG-A_HCHIMINH_0010S ) [1] => Array ( [0] => 201

有时,为了在很多php框架上兼容activerecord,我们会创建一个数组,然后为它创建一个临时数组

因此,如果我们不需要创建临时数组,那么就更加优雅。 我最喜欢的是阵列地图。 如果像这样的数组:

Array
(
[0] => Array
    (
        [0] => 2017-05-19
        [1] => HEUNG-A_HCHIMINH_0010S
    )

[1] => Array
    (
        [0] => 2017-05-19
        [1] => KITI_BHUM
    )

)
进入

Array
(
   [0] => Array
       (
         [date] => 2017-04-15
         [vessel] => KMTC_HOCHIMINH
)

   [1] => Array
       (
         [date] => 2017-04-15
         [vessel] => OCL_NAGOYA
       )
)
我需要使用数组映射

请告知

array_walk($arr, function(&$v) {
    $v = array_combine(['date', 'vessel'], $v);
});
……或者

$arr = array_map('array_combine', array_fill(0, count($arr), ['date', 'vessel']), $arr);
$arr = array_map(function($a) {
    return array_combine(['date', 'vessel'], $a);
}, $arr);
……或者

$arr = array_map('array_combine', array_fill(0, count($arr), ['date', 'vessel']), $arr);
$arr = array_map(function($a) {
    return array_combine(['date', 'vessel'], $a);
}, $arr);

您可以使用
array\u combine()
将索引数组转换为关联数组。它将键(日期/容器)的一个数组与值的另一个数组合并

array\u map()
将用于迭代数组

例如:

$keys_array = ['date', 'vessel'];

$new_array = array_map( function( $item ) {
    return array_combine( $keys_array, $item );
}, $array );
    • 这应该可以做到:

      $newArr = array_map(function($a){
          return ["date" => $a[0], "vessel" => $a[1]];
      }, $oldArr);
      
      var_dump($newArr);
      

      下面是使用
      array\u map

      $arr = [
      
        [
      
          '2017-05-19',
          'HEUNG-A_HCHIMINH_0010S'
      ],
      [
          '2017-05-19',
          'KITI_BHUM'
      ]
      
      ];
      echo '<pre>';print_r($arr);
      
      $formatted = array_map( function($v) {
        return [
            'date' => $v[0],
            'vessel' => $v[1]
          ];
      }, $arr);
      echo '<pre>';print_r($formatted);
      
      $arr=[
      [
      '2017-05-19',
      “香阿úHCHIMINHú0010S”
      ],
      [
      '2017-05-19',
      “KITI_BHUM”
      ]
      ];
      回声';印刷费($arr);
      $formatted=数组映射(函数($v){
      返回[
      “日期”=>$v[0],
      “船只”=>v美元[1]
      ];
      },$arr);
      回声';打印(格式化);