2013-10-01 37 views
0

我在这里有一个多维数组。多维数组到线性数组?

{ 
    "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" 
+1

这个味道更像JSON,后者解码可能成为一个多维数组。这个“数组”总是二维吗? – Mark

+0

是它的json和yap它会。 – bot

+0

生成的json没有被解析... –

回答

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); 
?> 
+0

它给了我一个警告'json_decode()期望参数1是字符串,数组给定'和'为foreach()提供的无效参数':( – bot

+0

已经替换了'$ mainArray'你的'JSON变量'?@bot –

+0

是的,我改变了它。我做了一个小研究,你的答案应该工作。我只有解码部分的问题.. :( – bot

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; 
}