PHP - 使用array_map将多维数组的键值转换为关联数组

3
有时,为了兼容许多php框架上的activerecord,我们有一个数组,然后创建一个临时数组来适应它。
如果我们不需要创建临时数组,那么更加优雅。我喜欢使用array_map。假如有这样一个数组:
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_map函数。
请给予建议。
4个回答

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

...or...

$arr = array_map('array_combine', array_fill(0, count($arr), ['date', 'vessel']), $arr);

...or...

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

2

以下是如何克服使用array_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);

1

0

这应该可以解决问题:

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

var_dump($newArr);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接