json_enode()返回奇异值的对象数组

时间:2016-06-25 09:40:20

标签: php jquery ajax

下面的代码只有像[“a”,“b”,“c”]这样的数组,但返回[Object,Object,Object]。结果我需要在ajax成功函数中使用嵌套的$ each循环。有没有更好的方法呢?

    if($_GET['semValue'])
    {
      $sem_value = $_GET['semValue'];
      try
      {  

         $stmt = $dbConn->prepare("SELECT Semester FROM CourseInfo");
         $semArray = array();
         if ($stmt->execute()) 
         {
           while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) 
           {
             $semArray[] = $row;
           }
         }
        echo json_encode($semArray);
        exit();

     }
    catch(PDOException $e)
    {
      echo 'Exception -> ';
      var_dump($e->getMessage());
    }

1 个答案:

答案 0 :(得分:0)

您在主数组中插入整个row,因此它将返回多维数组而不是字符串数组。

要获取字符串数组,请替换以下行。

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) 
{
     $semArray[] = $row["Semester"];
}

说明:

$row会是这样的,

$row= Array("semester"=>1);
$row= Array("semester"=>2);
// And so on

如果您按照当前的代码,那么您的最终数组将是这样的,

$semArray = Array ( [0]=> Array("semester"=>1), [1]=> Array("semester"=>2));

因此它变成了多维数组,这就是为什么我们使用$row["Semester"]来使它成为字符串/整数值的单维数组。