2012-06-29 243 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] = ...)。