2015-08-25 37 views
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

不能创建这样的一个阵列,数组中的所有内容都是一个键值对。如果你没有指定一个键,它将使用自己的索引。 – LaVomit

回答

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]'中有多个日期,所以它会以这种方式覆盖之前存储的日期。 – LaVomit

+0

@LaVomit更新的代码。谢谢你指出。 – mdamia

0

试试这个:

$arr = []; 

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

    print_r($arr); 
相关问题