多维数组到线性数组?

时间:2013-10-01 07:47:15

标签: php codeigniter multidimensional-array kendo-ui kendo-grid

我这里有一个多维数组。

  {
     "date_start": [
                   "2013-09-30",
                   "2013-09-27",
                   ],

     "time_start": [
                   "2013-09-30 08:41:00",
                   "2013-09-27 09:01:00",       
                   ],

     "time_out":   [
                   "2013-09-30 18:37:00",
                   "2013-09-27 21:11:00",
                   ],              
   }

是否可以将其转换为线性阵列?这样的事情?

 {
    [{"date_start":"2013-09-30","time_start":"2013-09-30 08:41:00","time_out":"2013-09-30 18:37:00"},
     {"date_start":"2013-09-27","time_start":"2013-09-30 09:01:00","time_out":"2013-09-30 21:11:00"}]
 }

我很难想到怎么做T_T。感谢能帮助我的人。

更新 这是我最新的工作。感谢Nil'z启发我使用解码。只需要更多的推文。

     $data_en = json_encode($data);
     $data_de = json_decode($data_en, true);
     $test = array();

     foreach($data_de as $key => $value)
     {
        echo $key."<br/>";
        foreach($value as $k => $v)
        {
            echo "$k |";
            echo json_encode($v)."<br/>";
        }   
     } 

现在是输出,但仍需要解决问题:

date_start
0 |"2013-09-30"
1 |"2013-09-27"

time_start
0 |"2013-09-30 08:41:00"
1 |"2013-09-27 09:01:00"

time_out
0 |"2013-09-30 18:37:00"
1 |"2013-09-27 21:11:00"

2 个答案:

答案 0 :(得分:1)

如果JSON尝试这样:

<?php
    $data   = array();
    $array  = json_decode( $mainArray );    #decode the JSON
    foreach( $array as $key => $each ){
        $data[$key]['date_start'] = $each['date_start'];
        $data[$key]['time_start'] = $each['time_start'];
        $data[$key]['time_out'] = $each['time_out'];
    }
    #again encode the JSON
    $data   = json_encode( $data );
    print_r( $data );
?>

答案 1 :(得分:0)

您可以尝试使用递归函数:

function array_multi_to_linear($arr) {
    static $rez;
    foreach($arr as $v) {
            if (is_array($v)) {
                array_multi_to_linear($v);
            } else {
                $rez[] =$v;
            }
    }
    return $rez;
}