1

JSON配列をラップしているブラケットをフォーマットする方法を試しています。このコードを使用して、データベースから配列のデータを引き出しています。

 $result = mysqli_query($con,"SELECT * FROM table");
 $column = array();
  while ($row = mysqli_fetch_array($result))
  {
   $column[] = array(array($row[0],$row[1],$row[2],$row[3],$row[4],$row[5]),$row[3],$row[2],$row[0]);
  }

JSON に変換されると、配列はこの形式で画面に出力されます。最初の角かっこは残す必要がありますが、2 番目の角かっこを (\') に交換する必要があります。

var myVar = [
[["22","mike"," 151.1272","-33.9324","learning to fish","08\/14\/13"],"-33.93024"," 151.12896172","22"],
[["23","mike"," -2.09875","51.44501","learning french","08\/04\/13"],"51.44501"," -2.09775","23"],
[["24","mike"," -2.16375","51.44823019014051","Programming","08\/05\/13"],"51.451"," -2.1675","24"],
];

したがって、配列は次のようになります。

var myVar = [
['"22","mike"," 151.12","-33.934","learning to fish","08\/14\/13"',"-33.94"," 151.12","22"],
['"23","mike"," -2.095","51.41","learning french","08\/04\/13"',"51.41"," -2.095","23"],
['"24","mike"," -2.165","51.41","Programming","08\/05\/13"',"51.44851"," -2.1675","24"],
 ];

この形式の配列が必要な理由は、配列に 4 つの列があることを期待する Google マップ関数にデータを渡すことができるようにするためです。

このような関数でブラケットを削除できることがわかりましたが、問題はすべてのブラケットを削除し、外部ブラケットが必要なことです。

$js_array = str_replace(array('[', ']'), '\'', htmlspecialchars(json_encode($column), ENT_NOQUOTES));

外側のブラケットを保持し、内側のブラケットを単に取り外すにはどうすればよいですか? 十分な情報を提供していない場合、または詳細を追加する必要がある場合はお知らせください。

ありがとう

4

2 に答える 2

3

そもそも必要な方法でアレイを作成するのはどうですか? それ以外の:

$column[] = array(
    array(
        $row[0],
        $row[1],
        $row[2],
        $row[3],
        $row[4],
        $row[5]
    ),
    $row[3],
    $row[2],
    $row[0]
);

これを行う:

$column[] = array(
    $row[0] . $row[1] . $row[2] . $row[3] . $row[4] . $row[5],
    $row[3],
    $row[2],
    $row[0]
);
于 2013-08-28T15:07:34.900 に答える
2

試す

str_replace('[["','[\'"',$string);

そして、ブラケットも最後に二重になっている場合(あなたの例ではありません)

str_replace('"]]','"\']',$string);
于 2013-08-28T15:10:08.987 に答える