2017-10-11 19 views
3

ハイチャート散布図の正しいJson出力を取得しようとしています。exampleを参照してください。私が欲しいハイチャートMysql Json配列PHP

JSON出力:

[{ 
     "name": "Female", 
     "color": "red", 
     "data": [{ 
      "name": "Anna", 
      "x": 161.2, 
      "y": 51.6 
     }, { 
      "name": "Clair", 
      "x": 167.5, 
      "y": 59.0 
     }] 
    }, 
    { 
     "name": "Male", 
     "color": "blue", 
     "data": [{ 
      "name": "James", 
      "x": 174.0, 
      "y": 65.6 
     }] 
    }, 
    { 
     "name": "Peet", 
     "color": "black", 
     "data": [{ 
      "name": "Peet", 
      "x": 175.3, 
      "y": 71.8 
     }] 
    } 
] 

data.php私が手

<?php 

$arr = array(); 
$arr1 = array(); 
$arr2 = array(); 
$result = array(); 

$sql = "SELECT `gender`, `name`, `length`, `weight` 
      FROM `highcharts_data` 
      WHERE `gender` = 'Female'"; 
$q = mysqli_query($mysqli,$sql); 

while($row = mysqli_fetch_assoc($q)){ 
$arr['name'] = 'Female'; 
$arr['data'] = array([(float)$row['length'], (float)$row['weight']]); 
$arr['color'] = 'red'; 

array_push($result,$arr); 
} 

$sql1 = "SELECT `gender`, `name`, `length`, `weight` 
      FROM `highcharts_data` 
      WHERE `gender` = 'Male' AND `name` != 'Peet'"; 
$q1 = mysqli_query($mysqli,$sql1); 

while($row = mysqli_fetch_assoc($q1)){ 
$arr1['name'] = 'Male'; 
$arr1['data'] = array([(float)$row['length'], (float)$row['weight']]); 
$arr1['color'] = 'blue'; 

array_push($result,$arr1); 
} 

$sql2 = "SELECT `gender`, `name`, `length`, `weight` 
      FROM `highcharts_data` 
      WHERE `gender` = 'Male' AND `name` = 'Peet'"; 
$q2 = mysqli_query($mysqli,$sql2); 

while($row = mysqli_fetch_assoc($q2)){ 
$arr2['name'] = 'Peet'; 
$arr2['data'] = array([(float)$row['length'], (float)$row['weight']]); 
$arr2['color'] = 'black'; 

array_push($result,$arr2); 
} 

print json_encode($result, JSON_NUMERIC_CHECK); 
mysqli_close($mysqli); 
?> 

JSON出力:

[{ 
    "name": "Female", 
    "data": [ 
     [161.2, 51.6] 
    ], 
    "color": "red" 
}, { 
    "name": "Female", 
    "data": [ 
     [167.5, 59] 
    ], 
    "color": "red" 
}, { 
    "name": "Male", 
    "data": [ 
     [174, 65.6] 
    ], 
    "color": "blue" 
}, { 
    "name": "Peet", 
    "data": [ 
     [175.3, 71.8] 
    ], 
    "color": "black" 
}] 

誰かがどのようにデータを変更する方法を教えてもらえます。 PHPファイル、私は正しいJsonの出力を得る!

ありがとうございます!

+0

データ:[{名: 'アンナ'、X:161.2、Y:51.6}この場合、Uの中に、名前を知っていますか? –

答えて

1

ここでは、PHPをJSONにフォーマットする方法の実際の例を示します。これにはmysqlの部分は含まれていませんが、ではなく、がわかりにくいはずです。

更新2017年10月12日、ダブルデータと訂正間違い:配列プッシュなし

更新2017年10月16日、修正ミスが:

<?php 
$males = array(); 
$malepersons = array(); 
$females = array(); 
$femalepersons = array(); 
$result = array(); 

$values = [[ 
    "name" => 'Anna', 
    "height" => 175, 
    "weight" => 53.4, 
    "gender" => 'Female' 
    ],[ 
    "name" => 'Dan', 
    "height" => 185.1, 
    "weight" => 90.4, 
    "gender" => 'Male' 
    ] ]; 

//Simplified for loop 
foreach ($values as $row){ 
    $person = array(); 
    $person['name'] = $row['name']; 
    $person['x'] = $row['height']; 
    $person['y'] = $row['weight']; 

    if($row['gender'] == 'Male'){ 
     array_push($malepersons, $person);   
    } elseif($row['gender'] == 'Female') { 
     array_push($femalepersons, $person); 
    } 
} 

//took these out of the for loop, only need to be set once 
$males['color'] = 'black'; 
$males['name'] = 'Male'; 
$males['data'] = $malepersons; 
$females['color'] = 'green'; 
$females['name'] = 'Female'; 
$females['data'] = $femalepersons; 


array_push($result, $males); 
array_push($result, $females); 
print json_encode($result, JSON_NUMERIC_CHECK); 
?> 

これはあなたを与えるだろうJSON

[{ 
    "color": "black", 
    "name": "Male", 
    "data": [{ 
    "name": "Dan", 
    "x": 185.1, 
    "y": 90.4 
    }] 
}, { 
    "color": "green", 
    "name": "Female", 
    "data": [{ 
    "name": "Anna", 
    "x": 175, 
    "y": 53.4 
    }] 
}] 

ハイチャートがセリとして望んでいるものは次のとおりです。 es入力。

$values配列は実際にはSQLによって返されたデータです。ループをループして、ループしたいループを変更するだけです。

を追加し、実施例:キー付きアレイhttps://ideone.com/RPp3DO

PHPドキュメント:http://php.net/manual/en/language.types.array.php

+0

こんにちはEwolden、あなたの迅速な対応に感謝します!それは私が心に留めているものに近いです。あなたのJson出力では、「データ」が2回出てきます。これはサンプルファイルでは機能しません。私はPHPとJsonの分野で絶対初心者です。私は次のdata.phpファイル(次の記事)で始めましたが、これは今まで私が得ている出力です: '' {color}: "" "" name ":" Male "" data "{{ "名前": "ピート"、 "データ":{"x":175.3、 "y":71.8}}}、{"色": "緑"、 "名前": "女性"、 "データ" "name": "Clair"、 "data":{"x":167.5、 "y":59}}}] ' –

+0

Part1: '<?PHP $ result = array(); $ sql = "SELECT' gender'、 'name'、' length'、 'weight' FROM' highcharts_data' "; $ q \t = mysqli_query($ mysqli、$ sql); while($ row = mysqli_fetch_assoc($ q)){ $ person = array(); if($ row ['gender'] == 'Male'){ 人['name'] = $ row ['name']; = 'x' => $ row ['length']、 'y' => $ row ['weight']]; $男性['color'] = 'black'; $男性['name'] = '男性'; $男性['data'] = $ person; } ' –

+0

elseif($ row ['gender'] == 'Female'){ $ person ['name'] = $ row ['name']; = 'x' => $ row ['length']、 'y' => $ row ['weight']]; $ female ['color'] = '緑色'; $ female ['name'] = '女性'; $ female ['data'] = $ person; } } array_push($ result、$ malees); array_push($ result、$ femaleales); print json_encode($ result、JSON_NUMERIC_CHECK); mysqli_close($ mysqli); ?> –