2013-02-27 103 views
0

在PHP我有以下:JSON編碼2維陣列

$query = mysql_query($sql); 
$rows = mysql_num_rows($query); 
$data['course_num']=$rows; 
$data['course_data'] = array(); 
while ($fetch = mysql_fetch_assoc($query)) 
{ 

    $courseData = array(
    'course_name'=>$fetch['course_name'], 
    'training_field'=>$fetch['training_field'], 
    'speciality_field'=>$fetch['speciality_field'], 
    'language'=>$fetch['language'], 
    'description'=>$fetch['description'], 
    'type'=>$fetch['type'], 
    ); 

    array_push($data['course_data'],$courseData); 
} 

echo json_encode($data); 

時收到這個腳本中的jquery(使用後)

的結果,我使用記錄它:

console.log(data['course_data']); 

並且輸出是:

[Object { course_name="Introduction to C++", training_field="Engineering" , speciality_field="Software", more...}] 

但我似乎無法弄清楚如何訪問元素。

我試圖

data['course_data'].course_name 

data['course_data']['course_name'] 

毫無效果。任何想法

回答

1

當你array_push($data['course_data'],$courseData);你實際上把$courseData$data['course_data'][0],因此你可以訪問它在JavaScript中作爲data['course_data'][0]['course_name']

如果你只打算有一個結果,而不是array_push($data['course_data'],$courseData);,你應該只指定$data['course_data'] = $courseData。否則,你應該遍歷data['course_data']像這樣:

for (i in data['course_data']) { 
    console.log(data['course_data'][i]['course_name']); 
} 
0
$data['course_data'][0]['course_name'] 

應該做的伎倆。如果沒有,請發送的var_dump輸出($數據)

+0

我覺得這是一個JS的問題,不是PHP – Zim84 2013-02-27 22:25:39

1

你應該第一個數組中指定索引例如

data['course_data'][0]['course_name']; 

你可以做的更好,如果你已經定義的第一陣列,就像變量未數組

0

假設PHP代碼是正確內的變量,您將收到類似JSON數據:

{ 
    "course_num":34, 
    "course_data":[ 
     { 
      "course_name":"name_value", 
      .... 
     }, 
     ....etc (other object based on SQL result) 
    ] 
} 

所以,如果你想訪問總數結果:

data.course_num 

如果您要訪問的結果列表的第一個元素:

data.course_data[0] 

如果你想獲得結果的列表的第一個元素的名稱:

data.course_data[0].course_name 

data.course_data[0]['course_name']