0

こんにちは、関数 json_encode を使用して、連想配列を介してデータベースからデータを取得しています。ただし、imgタグを文字列に変換して連想配列に配置し、jsonでエンコードして、そのimgタグを文字列として維持しながらすべてを吐き出すにはどうすればよいですか?

 while($row=$result->FetchRow())
{
  $id= (float)$row['id'];
  $name = $row['name'];
  $color1 = $row['color'];
  $type1 = $row['type'];
  $to= (float)$row['to']; 
  $thumb =$row['thumb']; //image path

  $array = array(
  "adjacencies" => array( array(
  "nodeTo" => "$to",
  "nodeFrom" => "$id",
  "data" => array() )),
  "data" => array(
   "$"."color" => $color1,
   "$"."type" => $type1 ),
  "id" => $id,
  "name" => "<img src='$thumb' height='30' width='30' alt='root'/><label>$name</label> ");
}
$json = json_encode($array);
print "$json";
return $json;
4

3 に答える 3

0

htmlspecialcharsを使用して、問題のある文字がエスケープされていることを確認します(http://php.net/manual/en/function.htmlspecialchars.php)。それ以外は、DOMに挿入するまでは文字列データです。

ループを繰り返すたびに、配列に別の要素$arrayを追加しようとしていると思います。ループの前に$array変数を初期化します

$array = array()

の代わりに

$array = array(
...
)

ループ内で、

$array[$key] = array(
...
)

ここで、$ keyは、配列のインデックス作成に使用するキーです。これには$idを使用したいと思います。整数をインクリメントして使用することもできます。

于 2013-03-14T05:10:55.523 に答える
0

これを試して:

$array=array();
while($row=$result->FetchRow())
{
    $id= (float)$row['id'];
    $name = $row['name'];
    $color1 = $row['color'];
    $type1 = $row['type'];
    $to= (float)$row['to']; 
    $thumb =$row['thumb']; //image path

    $array = array(
        "adjacencies" => array( array(
            "nodeTo" => "$to",
            "nodeFrom" => "$id",
            "data" => array() 
        )),
        "data" => array(
            "$"."color" => $color1,
            "$"."type" => $type1 ),
        "id" => $id,
        "name" =>htmlspecialchars("<img src='".$thumb."' height='30' width='30' alt='root'/><label>".$name."</label>")
    );
}
$json = json_encode($array);
echo $json;
return $json;

http://php.net/manual/en/function.htmlspecialchars.phpを読む

于 2013-03-14T05:06:11.527 に答える
0

まず、ループを渡すたびに $array を上書きしています。次の行を修正することを検討してください

...
$thumb =$row['thumb']; //image path

$array = array(
"adjacencies" => array( array(
"nodeTo" => "$to",
...

...
$thumb =$row['thumb']; //image path

$array[] = array(
"adjacencies" => array( array(
"nodeTo" => "$to",
...

それ以外は、いくつかのデフォルト変数でコードを試してみました

$id = $to = 1;
$color1 = 'green';
$type1 = 'type1';
$thumb = 'image.jpg';
$name = 'image name';
$array = array(
    "adjacencies" => array(
        array(
            "nodeTo" => $to,
            "nodeFrom" => $id,
            "data" => array()
        )
    ),
    "data" => array(
        "$"."color" => $color1,
        "$"."type" => $type1
    ),
    "id" => $id,
    "name" => "<img src='$thumb' height='30' width='30' alt='root'/><label>$name</label> "
);
echo json_encode($array);

この JSON を返しますが、これはあなたが探しているものと思われますか?

{
    "adjacencies": [
        {
            "nodeTo": 1,
            "nodeFrom": 1,
            "data": []
        }
    ],
    "data": {
        "$color": "green",
        "$type": "type1"
    },
    "id": 1,
    "name": "<img src='image.jpg' height='30' width='30' alt='root'/><label>image name</label> "
}
于 2013-03-14T05:08:49.000 に答える