0

私はJSON配列を構築するPHP関数を持っています

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

これはどのように行われますか?

4

1 に答える 1

4

配列の各要素をプッシュするだけでなく ( $jsonArray[] = ...)、関連するキーに割り当てるだけです ( $jsonArray[$somekey] = ...)。

于 2012-06-29T01:35:21.277 に答える