0

こんにちは私は、最終結果が以下のjson配列のようになる連想配列をクエリしようとしています。ただし、データセクションとID名セクションでノードごとに1回クエリを実行し、ノードに複数の隣接がある場合は隣接セクションで複数回クエリを実行する必要があります。条件が次の場合、このネストされた配列の1つのセクションを複数回クエリするにはどうすればよいですか。この構造を維持しながら、ノードに複数の隣接関係があるか、まったく隣接関係がないかを確認しながら、残りの部分に一度会いましたか?

   var json =[{
        "adjacencies": [{
           "nodeTo": "graphnode9",
           "nodeFrom": "graphnode5",
           "data": {}
        }],
        "data": {
            "$color": "#C74243",
            "$type": "triangle",
        },
        "id": "graphnode5",
        "name": "graphnode5"
  }];

これが私のデータベース構造です

nodes                 Relationships                      
-----                 -------------
id int(11),           id int(11),
name varchar(35),     to int(11), //this is the destination node from the id relation 
color varchar(7),     data varchar(0) null
type varchar (12),    Foreign key (id) references nodes(id)
Primary key (id)       

engine = innodb    

これが連想配列を取得するための私の試みですが、それは一度にクエリを実行し、構造全体を複製します。

function getjson(){  
    $db = adodbConnect();
    $query = "SELECT nodes.*, relationships.* FROM nodes inner JOIN relationships ON nodes.id = relationships.id";
    $result = $db -> Execute($query);

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

        $array = array(
            "adjacencies:" => array(
                "nodeTo" => "$to",
                "nodeFrom" => "$id",
                "data" => array()
            ),
            "data" => array(
               "$"."color" => $color1,
               "$"."type" => $type1
            ),
            "id".":" => $id,
            "name".":" => $name
        );

    }
    print"$array";
    json_encode($array);
}
4

1 に答える 1

1

ループの外で配列を作成し、それに項目を追加する必要があります

$array = array();
while($row=$result->FetchRow()) {
    $array[] = array(
        "adjacencies:" => array(
            "nodeTo" => (float)$row['to'],
            "nodeFrom" => (float)$row['id'],
            "data" => array()
        ),
        "data" => array(
           '$color' => $row['color'],
           '$type' => $row['type']
        ),
        "id" => (float)$row['id'],
        "name" => $row['name']
    );

}
于 2013-03-12T20:40:30.870 に答える