转换嵌套的 JSON 数组


Converting nested JSON array

我有一个PHP函数,它通过以下方式构建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]);
  } 
}

并在通过 ajax 查询执行时返回它。

但是,它在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
  }
}

这将如何完成?

而不是只推送数组的每个元素 ( $jsonArray[] = ... ),只需分配给相关的键 ( $jsonArray[$somekey] = ... )。