2017-02-17 2 views
0

Ich habe ein mehrdimensionales Array als Ergebnis einer json_decode:Wert dynamisch zu einem mehrdimensionalen Array in 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); 

dann versuche ich verschiedene Art und Weise der Anordnung zu Fuß durch und nützlicher finde ich, ist dies ein :

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

ich habe etwas anderen Ansatz versucht, in das Feld „Daten“ der Wert des Starts zuweisen, sondern einen var_dump über das $arrayJson Objekt wird nicht gefassten Wert, wenn gemacht!

$cell[$value]=$start; funktioniert nicht! $value= $something; funktioniert nicht!

+3

Verwenden 'References' dies ändern' foreach ($ cell als $ key => $ value) 'zu' foreach ($ cell als $ key => & $ value) 'und diese' foreach ($ arrayJson als $ cell) 'zu' foreach ($ arrayJson als & $ Zelle) ' – JustOnUnderMillions

Antwort

2

Wie bereits in den Kommentaren erwähnt, durch Bezugnahme verwenden. Es besteht auch keine Notwendigkeit, die innere Schleife haben, können Sie das ‚Daten‘ Mitglied direkt zugreifen:

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

ja so einfach ... danke an alle! – JahStation

+0

Kein Problem. Wenn Sie eine Antwort mögen, markieren Sie sie bitte als akzeptiert. –

1

Einen Weg nach Rom: (mit Referenzen)

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"; 
} 
Verwandte Themen