2017-05-19 61 views
1

如何使数组内的元素数组再次爆炸。 我有这样一个阵列在数组中爆炸一个元素

echo "<pre>"; 
print_r($pks); 

结果。

Array 
(
    [0] => 2017-04-15||KMTC_HOCHIMINH 
    [1] => 2017-04-15||OOCL_NAGOYA 
) 

我预计这样的,

Array 
(
    [record] => 
     [1] 2017-04-15 
     [2] KMTC_HOCHIMINH 
    [record] => 
     [1] 2017-04-15 
     [2] OOCL_NAGOYA 
) 

在PHP什么键进行处理阵列这样。 请指教。

UPDATE 这个怎么样。

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

[1] => Array 
    (
     [date] => 2017-04-15 
     [vessel] => OOCL_NAGOYA 
    ) 

) 

回答

2

可以使用array_walk()(或只是foreach如果你想):

array_walk($pks, function(&$a) { 
    $a = array_combine(['date', 'vessel'], explode('||', $a)); 
}); 

的foreach方法:

foreach($pks as $k => $v) { 
    $pks[$k] = array_combine(['date', 'vessel'], explode('||', $v)); 
} 

然而,每个阵列的关键将不会record,因为多次使用相同的密钥是不可能的。

输出:

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

    [1] => Array 
     (
      [date] => 2017-04-15 
      [vessel] => OOCL_NAGOYA 
     ) 

) 

加成方法,因为我喜欢和阵列搞乱:

$pks = array_map('explode', array_fill(0, count($pks), '||'), $pks); 
+0

感谢队友,巨大的粉丝。请看我更新的问题。 –

+0

@FadlyDzil编辑'array_walk()'和'foreach'方法来产生预期的输出。如果我的答案解决了您的问题,请将其标记为这样。 – Enstage

2

尝试此,检查live demo

foreach($pks as $k => $v) { 
    $values = explode('||', $v); 
    $result[] = array_combine(range(1, count($values)), $values); 

    //added 
    $res[] = array_combine(['date', 'vessel'], $values) ; 

} 

结果

Array 
(
    [0] => Array 
     (
      [1] => 2017-04-15 
      [2] => KMTC_HOCHIMINH 
     ) 

    [1] => Array 
     (
      [1] => 2017-04-15 
      [2] => OOCL_NAGOYA 
     ) 

) 
+0

感谢队友。请看我更新的问题。 –

+0

@FadlyDzil现在检查它 –