2011-08-08 18 views
0

PHPの配列に問題があります。ですから、私は、このようなフィールドを持つデータベースのテーブル "Users"を持っています: "名前、姓、年齢、評価"。ユーザー数は100人近くです。データベースからすべてを取得し、配列にポストし、JSONエンドショーでエンコードする必要があります。だから私は次のようにする必要があると思います:PHPの多次元配列

  1. DBから1行を取得します。
  2. 連想配列のような配列フィールドにすべてのデータを追加します。
  3. 配列をいくつかの配列コンテナにプッシュします。
  4. 配列をJSONにエンコードします。

しかし、私がエンコードしようとすると、配列コンテナの最後の要素しか得られません。私はそのような何かをwritted:

$arrContainer = array(); 
$arr = array(); 
$i = 0; 
while($row = getDataFromDB) 
{ 
    arr[$i] = $i; 
    arr["name"] = row["name"]; 
    arr["age"] = row["age"]; 

    array_push($arrContainer, $arr); 
    $i++; 
} 

JSON.encode($arrContainer); 

QUESTION:どのように私はいくつかのデータを持つ配列の配列を作ることができます?どうもありがとう!

答えて

3
while($row = getDataFromDB) 
{ 
    $arr[]=$row; // add $row as element of $arr array 
} 

は今、あなたはを取得し、JSONは、いくつかのデータベースの拡張、他にそれを

をエンコードすることができ、自動的に多次元配列にすべてのデータを返します。あなたが投稿したコードは、正しい

$arr = array(); 
$i = 0; 
while($row = getDataFromDB){ 
    $arr[$i] = $row; 
    $i++; 
} 
JSON.encode($arr); 
1

これを試してみてくださいを参照してください。次の行では、$arr変数の前に$を入れたことを忘れた:

arr[$i] = $i; 
arr["name"] = row["name"]; 
arr["age"] = row["age"]; 

また、arr[$i] = $i;のような行は、おそらく$arr['rowNum'] = $i;のようなもので、値が冗長に見えるのと同じものにする必要があります。

array_push()は、配列に複数の値を追加することや、スタックとして扱いたい場合など、@RiaDとして$arrContainer[]=$row;を使用する方が素早く行の配列を取得することができます。

+0

なぜnotz?もし彼がそれを望んでいれば? – xXx

1

あなたに@リヤドの答え のように配列し、その後、出力JSONを作成することができます。..

while($row = getDataFromDB) // @RiaD's code 
{ 
    $arr[]=$row; // add $row as element of $arr array 
} 

//json output 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT"); 
header("Cache-Control: no-cache, must-revalidate"); 
header("Pragma: no-cache"); 
header('Content-type: application/json'); 
echo json_encode($your_array); 
0
$allValuesArr = array(); 
$arr= array(); 
while($myRow = mysql_fetch_array($result)) 
{ 
    $arr["uid"] = $myRow["uid"]; 
    $arr["name"] = $myRow["name"]; 
    $arr["surname"] = $myRow["surname"]; 
    $arr["age"] = $myRow["age"]; 
    $arr["telephone"] = $myRow["telephone"]; 
    $arr["prof_id"] = $myRow["prof_id"]; 
    //$allValuesArr[] = $arr; 
    array_push($allValuesArr, $arr); 
} 

$strJSON = json_encode($allValuesArr); 
echo $strJSON; 

応答私が取得:

[{"uid":"1","name":"Sergii","surname":"Surname1","age":"26","telephone":"0976543135","prof_id":"1225423"},{"uid":"2","name":"Slava","surname":"Surname2","age":"24","telephone":"06353524","prof_id":"13584384"},{"uid":"3","name":"Desame","surname":"Surname3","age":"28","telephone":"0973153584","prof_id":"35843815"}] 
+0

それは私が持っている。そうですか? – yozhik