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 за то, что он просветил меня, чтобы использовать декодирование. Просто нужно немного больше tweek.

 $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 variable'? @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; 
} 
Смежные вопросы