2012-06-29 212 views
0

我有建立经由转换嵌套JSON阵列

$jsonArray= array(); 
for ($i=0; $i<$dirCount; $i++){ 
    $query = sprintf("SELECT * FROM tour WHERE FileName= '../%s/%s'", $imageDirectory, $dirArrays[$i]); 
    $result = mysqli_query($link, $query); 

    if (mysqli_num_rows($result) == 1){ 
    $row = mysqli_fetch_row($result); 
    $jsonArray[]= array('filename'=>$dirArrays[$i], 'location'=>$row[4], 'latitude'=>$row[2], 'longitude'=>$row[3], 'heading'=> $row[5]); 
    } 
} 

JSON数组和通过Ajax查询在执行时返回它PHP函数。

但是,它显示在Firebug为

[ 
    0 : Object{ 'filename' : , 'location': , 'latitude': , 'longitude: }, 
    1 : Object{ 'filename' : , 'location': , 'latitude': , 'longitude: }, 
] 

我如何转换这使得指数位置是location值呢?我已经记

'start' : Object{ 'filename' : , 'location': , 'latitude': , 'longitude: }, 
'testLab' : { 'filename' : , 'location': , 'latitude': , 'longitude: } 

背后的原因,这是我与一个在比赛进行到位置字段的数据字段创建对象的另一个功能。

function buildData(input){ 
    for (var i=0; i<data.length; i++){ 
    if (data[i].location == input) 
     //create and return object using data[i] fields 
    } 
} 

我想摆脱循环,并依靠有条件像

function buildData(input){ 
    if (data[input]){ 
    //same object creation and return 
    } 
} 

这将如何做呢?

回答

3

而不是仅仅推动阵列($jsonArray[] = ...)中的每个元素,只分配给相关键($jsonArray[$somekey] = ...)。