2017-05-19 82 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現在檢查它 –