2016-04-04 5 views
0

Wie greife ich auf jeden Wert eines JSON-Objekts zu, das ein Array von Daten enthält? Ich sende ein JSON-Objekt von meiner Android App.Wie greife ich auf jeden Wert eines JSON-Objekts zu?

{"date":"[Tue Apr 05 00:00:00 GMT+05:30 2016, Wed Apr 06 00:00:00 GMT+05:30 2016]"} 

Hier ist meine PHP-Code:

<?php 
    require_once 'include/DB_Functions.php'; 
    $db = new DB_Functions(); 

if(isset($_POST['ngno']) && isset($_POST['JSON'])){ 

    $ngno = $_POST['ngno']; 
    $json = json_decode($_POST['JSON'], true); 
    $dates = $json['date']; 

    foreach($dates as $date){ 
     $job = $db->updateDates($ngno, $date); 

     if($job){ 
      $response["error"] = FALSE; 
      echo json_encode($response); 
     } 

     else{ 
      $response["error"] = TRUE; 
      $response["error_msg"] = "Unknown error occurred in Updating!"; 
      echo json_encode($response); 
     } 
    } 

} 

else{ 
    $response["error"] = TRUE; 
    $response["error_msg"] = "Dates are missing!"; 
    echo json_encode($response);  
} 
?> 

updateDates Funktion:

public function updateDates($ngno, $date){ 

    $stmt = $this->conn->prepare("INSERT INTO datepicker(ngno, date) VALUES($ngno, $date)"); 
    $result = $stmt->execute(); 
    $stmt->close(); 
} 

Aber ich erhalte eine Fehlermeldung sagen: PHP Warning:

Invalid argument geliefert für foreach()

+0

check 'print_r ($ json)' –

+2

'$ json [" datum "]' ist kein Array, sondern eine Zeichenkette. – apokryfos

+0

[Di Apr 05 00:00:00 GMT + 05: 30 2016, Mi Apr 06 00:00:00 GMT + 05: 30 2016] ist eine Zeichenfolge. Ich schätze, du musst es explodieren lassen auf ',' und strip out '[' das klingt, als ob du die falschen Daten sendest. – Farkie

Antwort

0

Da die Kommentare sagen, Sie sind zur Zeit in einer Schleife durch einen string versuchen und nicht ein array so ist, warum die foreach schränkt Sie einen Fehler gibt.

Die gute Lösung wäre wahrscheinlich die so einrichten, Ihre JSON kehrt ein array von Terminen statt einer string zu verändern.

Die andere Weg, dies zu lösen würde die string in eine array wie so explodiert sein:

$dates = explode(',', $json['date']);

diese Weise können Sie ein Array Sie Schleife durch haben kann.

Verwandte Themen