2017-05-19 14 views
1

配列内の要素配列を作成する方法を再度爆発させます。 私はこのような配列を持っています配列内の要素を爆発させる

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

結果。私はこのような期待

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

、このような配列を処理するために、PHPのどのようなキー

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

。 お知らせください。

更新 これはどうですか。

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今すぐ確認 –

関連する問題