2017-02-17 14 views
0

Я получил многомерный массив в результате json_decode:присвоить значение динамически многомерного массива в PHP

$start=new DateTime(); 
$jzon='[{"latitude":41.9089983,"longitude":12.4778983,"mVersionCode":1, "data":""}, 
{"latitude":41.9091,"longitude":12.4781983,"mVersionCode":1, "data":""}, 
{"latitude":41.9087983,"longitude":12.4786,"mVersionCode":1, "data":""}, 
{"latitude":41.9082,"longitude":12.4793,"mVersionCode":1, "data":""}, 
{"latitude":41.9065,"longitude":12.4811983,"mVersionCode":1, "data":""}, 
{"latitude":41.9061983,"longitude":12.4819983,"mVersionCode":1, "data":""}, 
{"latitude":41.9063983,"longitude":12.4827983,"mVersionCode":1, "data":""}, 
{"latitude":41.9089983,"longitude":12.4840983,"mVersionCode":1, "data":""}]'; 

$arrayJson=json_decode($jzon, TRUE); 

то я стараюсь другой способ пройти через массив и тем более полезным я считаю, это один :

if (json_last_error() === JSON_ERROR_NONE) { 
    // JSON is valid 
    foreach($arrayJson as $cell) { 
     foreach($cell as $key=>$value) {  
      if($key=='data') { 
       $value=$start->format('Y-m-d\ H:i:s'); 
       $start=$start->modify('+1 seconds');      
      } 
     } 
    } 
} else { 
    echo " not valid Json"; 
} 

Я попытался немного другой подход, чтобы назначить в поле «данные» значение начала, но если сделал var_dump над $arrayJson объекта не выставиться значение!

$cell[$value]=$start; не работает! $value= $something; не работает!

+3

Используйте 'References' Изменить это' foreach ($ cell as $ key => $ value) 'to' foreach ($ cell as $ key => & $ value) 'и этот' foreach ($ arrayJson as $ cell) 'to' foreach ($ arrayJson as & $ cell) ' – JustOnUnderMillions

ответ

2

Как уже упоминалось в комментариях, используйте по ссылке. Там также нет необходимости иметь внутренний цикл, вы можете получить доступ к элементу «данные» непосредственно:

foreach($arrayJson as &$cell) 
{ 
    $cell['data'] = $start->format('Y-m-d\ H:i:s'); 
    $start=$start->modify('+1 seconds'); 
} 
+0

да так легко ... спасибо всем! – JahStation

+0

Нет проблем. Если вам нравится ответ, отметьте его как принятый. –

1

Один путь в Рим: (Использование ссылок)

if (json_last_error() === JSON_ERROR_NONE) { 
    // JSON is valid 
    foreach($arrayJson as &$cell)//<--- reference here 
    { 
    $cell['data'] = $start->format('Y-m-d\ H:i:s'); 
    $start = $start->modify('+1 seconds');     
    } 
} else { 
    echo " not valid Json"; 
}