如何访问JSON对象的每个值?

时间:2016-04-04 08:31:52

标签: php json

如何访问包含日期数组的JSON对象的每个值?我从我的Android应用程序发送一个JSON对象。

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

这是我的php代码:

<?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功能:

public function updateDates($ngno, $date){

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

但我得到一个错误说,PHP警告:

  

为foreach()提供的参数无效

1 个答案:

答案 0 :(得分:0)

正如评论所说,您目前正在尝试循环使用string而不是array,以便foreach给您回复错误的原因

良好解决方案可能会改变您的设置,以便JSON返回array个日期而不是string

解决此问题的其他方法是将string分解为array,如下所示:

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

这样你就有了一个可以循环的数组。