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

时间:2017-05-19 04:21:31

标签: php arrays multidimensional-array

有时候,为了在很多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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

以下是使用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);

答案 2 :(得分:0)

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

array_map()将用于迭代数组。

示例:

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

$new_array = array_map( function( $item ) {
    return array_combine( $keys_array, $item );
}, $array );

答案 3 :(得分:0)

这应该这样做:

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

var_dump($newArr);