2016-12-16 7 views
0

私はこの質問が何度も答えられたことは知っていますが、私はオブジェクト、配列、文​​字列、およびJSONに関する混乱のために、まだ問題があります。
Highchartsを使用してグラフを実装しようとしましたDBからデータを抽出するPHPを作成しました。単純化すると、これらは単に値のペア(つまり、曜日、訪問数)であるとします。
JSに送る配列の配列を作成したいと思います。 私はこのようにそれを作った:配列の配列を回復するJavaScript/PHP

while ($row = mysql_fetch_array($result)) { 
$dat = substr($row['data'],8,2);  //strip to day 
$pag = $row['pagina']; 
$data[] = "[".$dat.",".$pag."]"; 
} 
$finalData = join($data, ','); 

//echo json_encode($finalData); // I get [09,20],[12,15],[12,11],[12,18] 
echo "[".$finalData."]";  //I get [[09,20],[12,15],[12,11],[12,18]] 

見ての通り、私は(json_encodeなしと/といくつかのバリエーション)二つの異なる方法を試してみました。クライアント側で

、Iが宣言:このように充填されvar donwloaded = [[]];(配列の配列):

再び
.... 
var response = xmlhttp.responseText; 
// donwloaded = JSON.parse(response); 
donwloaded = response; 

Iの2つの方法で試みました。
すべての可能な組み合わせでは、最後に 'donwloaded'という結果が文字列として(Mozillaデバッガによると)、グラフは埋められません。私はPHPから何を得るのように表示され

var testValues = [ [1,10],[2,20],[3,30],[4,40] ]; 

は、Mozillaはこの4つの配列の配列、およびHighchartはそれを正しく表示することを言う:

興味深い部分は、JSで、私はこのことを宣言した場合ということです。

エラーはほとんどありませんでしたが、テストで2日間過ごした後、私はさらに混乱しています。

+3

通常のPHP配列(多次元)を作成し、結果に' json_encode'を適用します。 '$ data [] =" ["。$ dat。"、 "。$ pag"] ";'を '$ data [] = [$ dat、$ pag];'に置き換えてください。 –

+1

mysql_ *関数を使用しないでください。以下をご覧ください:http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php詳細については –

+0

あなたは正確に何を探していますか? – rahul

答えて

0

私はそれをしました! 私は、私が始めたときよりも私がおそらくもっと混乱しているので、私にどのように聞いていません。
このメッセージを投稿して、自分のような初心者向けのソリューションを共有したいと思います。

Replace $data[] = "[".$dat.",".$pag."]"; with $data[] = [$dat, $pag]; 

非常にシンプルで非常に効果的:

最初のステップは、ルスランOsmanovの提案に従うことでした。
多次元配列を作成しようとする試みが少ししかなかったので、最後にecho json_encode($data);を入れて、ほとんどの問題が解消されました。
クライアント側では、簡単なdonwloaded = JSON.parse(response);を使って、Mozillaが配列の配列として認識していたものも、Highchartも受け取りました。

とにかく問題が残っていました。配列への値は二重引用符で 'stringified'されている可能性があります。これはおそらくエンコーディングによるもので、Highcartsは値を視覚化しませんでした。
PHPで$データを$data[] = [(int)$dat,(int)$pag];
に変更しました。数値を数値にキャストすると、今度はグラフを視覚化することができます。
もう少し効率的でエレガントな方法があると確信していますが、必要なことをしてくれて満足しています。 `