【问题标题】:Multidimensional array to linear array?多维数组到线性数组?
【发布时间】:2013-10-01 07:47:14
【问题描述】:

我这里有一个多维数组。

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

【问题讨论】:

  • 这闻起来更像 JSON,解码后可能变成多维数组。这个“数组”会一直是二维的吗?
  • 是的,它的 json 和 yap 会的。
  • 生成的 json 没有被解析...

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


【解决方案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 );
?>

【讨论】:

  • 它给了我一个警告“json_decode() 期望参数 1 是字符串,给定数组”和“为 foreach() 提供的参数无效”:(
  • 您的 $mainArray 是否已替换为您的 json variable ? @bot
  • 是的,我改变了它。我做了一些研究,你的答案应该有效。我只有解码部分有问题.. :(
【解决方案2】:

你可以试试递归函数:

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

【讨论】:

    猜你喜欢
    • 2010-10-15
    • 2020-05-08
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多