转换嵌套的JSON数组

时间:2012-06-29 01:33:27

标签: php javascript json

我有一个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: }

这背后的原因是我有另一个函数,它在与location字段匹配时创建一个带有数据字段的对象。

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
  }
}

如何做到这一点?

1 个答案:

答案 0 :(得分:3)

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