2016-06-25 4 views
0

В приведенном ниже коде имеется только массив, похожий на ["a", "b", "c"], но возвращает [Object, Object, Object]. В результате я должен использовать вложенный $ каждый цикл в функции успеха ajax. Есть ли лучший способ сделать это?json_enode() возвращает массив объектов для особых значений

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()); 
    } 
+0

'$ semArray [] = $ row ['Semester'];' – splash58

+0

исправить в этом перед ур "echo json_encode()" ......... header ('Content-Type: application/json'); –

+0

@ splash58: Работал как шарм! Благодаря! Но howcome, если я упомянул в запросе, чтобы выбрать только семестр, мне все равно нужно указать его в $ row ['']? – siempreCuriosa

ответ

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"], чтобы сделать его одномерным массивом значений string/integer.

+0

Спасибо! Это сработало Еще один вопрос, хотя, если я упомянул в запросе, чтобы выбрать только семестр, мне все равно нужно указать его в $ row ['']? – siempreCuriosa

+0

Yeah '$ row' - это массив, для выбора определенного элемента вы должны использовать' $ row [''] ' –

+0

Итак, это похоже на массив массивов? например, [«Семестр» -> ["a", "b", "c"], "Курс" -> ["a1", "b1", "c1"]]? – siempreCuriosa