Как получить массив в правильном порядке

1

Как получить массив в правильном порядке?

Я печатаю массив, но он не выбирается в правильном порядке.

Я хочу, чтобы каждое значение трека содержало массив даты и массив числа соответственно. пожалуйста, дайте решение. Любая помощь будет высоко оценена.

Мой код для массива выборки:

  <?php
        foreach($posts as $post)            
        {
            $array['track_value'][] = $post->track_value;
            $array['track_value']['date'][] = $post->date;
            $array['track_value']['num'][] = $post->num; 
         }  
  ?>    

Из этого я получаю неправильное значение, подобное этим:

  <?php
       Array (
     [track_value] => Array
         (
              [0] => mobile
              [date] => Array
                  (
                      [0] => 2015-08-23
                      [1] => 2015-08-24
                      [2] => 2015-08-23
                     [3] => 2015-08-24
                      [4] => 2015-08-22
                      [5] => 2015-08-23
                      [6] => 2015-08-24
             )

              [num] => Array
                  (
                      [0] => 1
                      [1] => 1
                      [2] => 1
                      [3] => 2
                      [4] => 1
                      [5] => 1
                      [6] => 1
                  )

              [1] => mobile
              [2] => laptop
              [3] => laptop
              [4] => pc
              [5] => pc
              [6] => pc
          )

  )
  ?>

Выход должен быть следующим:

  <?php
  Array (
      [track_value] => Array
          (
              [0] => mobile
              Array
              (
                  [date] => Array
                      (
                          [0] => 2015-08-23
                         [1] => 2015-08-24
                      )

                  [num] => Array
                      (
                   [0] => 1
                    [1] => 1
                 )
              )

              [1] => laptop
              Array
              (
                  [date] => Array
                      (
                          [0] => 2015-08-23
                     [1] => 2015-08-24
                      )

                  [num] => Array
                      (
                          [0] => 1
                          [1] => 2
                      )
              )    
              [2] => pc
              Array
              (
                  [date] => Array
                      (
                          [0] => 2015-08-23
                          [1] => 2015-08-24
                          [2] => 2015-08-23
                      )

                  [num] => Array
                      (
                          [0] => 1
                          [1] => 1
                         [2] => 1
                      )
              )
          )

  )
 ?>
  • 0
    Вы не можете создать такой массив, так как все в массиве является парой ключ-значение. Если вы не укажете ключ, он будет использовать свой собственный индекс.
Теги:
arrays

3 ответа

1
Лучший ответ

Я не уверен, что вы пытаетесь сделать, но, возможно, это поможет вам в пути:

foreach($posts as $post)            
{
    $array['track_value'][$post->track_value]['date'][] = $post->date;
    $array['track_value'][$post->track_value]['num'][] = $post->num;
}

Это даст вам выход:

Array(

    'track_value' => Array(

        'mobile' => Array(

            'date' => Array(

                0 => '2015-08-25',
                1 => '2015'08'26',

            ),

            'num' => Array(

                0 => 1337,
                1 => 13337,

            ),
        ),
        'pc' => ...
    ),
)
0

Попробуй это:

  $tracks = [];

  foreach($posts as $k1 as $v1) {

         if (is_array($value)){

           foreach ($value as $k2 => $v2) {

              $tracks[$k1][$k2] = $v2;
           }
         }

         $tracks[$k1] = $v1;
  }  
  • 0
    Имеет несколько дат в [$key] поэтому он будет переопределять предыдущую сохраненную таким образом.
  • 0
    @ LaVomit обновил код. спасибо за указание на это.
0

Попробуй это:

  $arr = [];

  foreach($posts as $key => $val)
   $arr['track_value'][$val->track_value][] = ['date' => $val->date, 'num' => $val->num];
  }

  print_r($arr);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню