2013-02-27 106 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']