2017-11-22 23 views
-1

サー、PHP多次元配列の再編成

この問題の正確なタイトルは何か混乱しています。別の配列にする必要があります以下は、私が今

 
Array 
(
    [0] => Array 
     (
      [0] => 2017-11-01 
      [1] => 9 Am 
     ) 

    [1] => Array 
     (
      [0] => 2017-11-02 
      [1] => 07 Pm 
     ) 

    [2] => Array 
     (
      [0] => 2017-11-03 
      [1] => 11 Pm 
     ) 

    [3] => Array 
     (
      [0] => 2017-11-04 
      [1] => 03 Pm 
     ) 

    [4] => Array 
     (
      [0] => 2017-11-01 
      [1] => 11 Am 
     ) 

    [5] => Array 
     (
      [0] => 2017-11-02 
      [1] => 05 Pm 
     ) 

) 

以下のような多次元配列を持っている私の問題

は、私は時間の横に独自の日付を作りたいです。私は以下のようにそれをしたい ...事前に

 
Array 
(
    [0] => Array 
     (
      [0] => 2017-11-01 
      [1] => Array 
       (
        [0] => 9 Am 
        [1] => 11 Am 
       ) 

     ) 

    [1] => Array 
     (
      [0] => 2017-11-02 
      [1] => Array 
       (
        [0] => 07 Pm 
        [1] => 05 Pm 
       ) 

     ) 

    [2] => Array 
     (
      [0] => 2017-11-03 
      [1] => Array 
       (
        [0] => 11 Pm 
       ) 

     ) 

    [3] => Array 
     (
      [0] => 2017-11-04 
      [1] => Array 
       (
        [0] => 03 Pm 
       ) 

     ) 

) 

おかげ..

よろしく、

アンワル

+0

目的は何ですか?日付をキーにするのではなく、それらを入れ子にしたいのですか? – kchason

+0

すぐにお返事ありがとうございます。 実際には、0のインデックスと時間を別の配列の1つのインデックスに保持したい –

+0

挿入するたびにループが必要になります...これは作成とアクセスの両方にとって非常に非効率的です。これまでに何を試しましたか? – kchason

答えて

1

トリックを行う必要があり、そのファッションの何か...

これは最速の方法ではありませんが、それはあなたに行かなければなりません。読みやすく/理解しやすいです。

// putting the times in a new array where the date is the key 

$byDate = []; 
foreach ($firstArray as [$date, $time]) { 
    $byDate[$date][] = $time; 
} 


// going thru it again to have it the way you needed it 

$newArray = []; 
foreach ($byDate as $date => $times) { 
    $newArray[] = [$date, $times]; 
}