0

こんにちは、あるテーブルからユーザーのすべての電話番号を検索し、その電話番号リストに従って別のテーブルでユーザーの情報を検索する PHP スクリプトがあります。

PHP スクリプト:

$intUserID = $_POST['intUserID_PHP']; //This is the user ID 
$arrayUserPhoneNumbers = $_POST['arrayUserPhoneNumbers'];//this is an array of all the user's phone numbers.
  try {     
        $DBC  = new PDO("pgsql:host=$host;port=$port;dbname=$dbname;user=$user;           password=$password");//All my DB connection is well set.
        $query1 = "SELECT phones FROM usersphones WHERE id=".$intUserID;
        $sth = $DBC->prepare($query1);
        $sth->execute();
        $result = $sth->fetchAll();
        $i = 0;
           foreach ($result as $data) {
             $query2 = "SELECT txtshare,dtzserver,adress,issue FROM tbluserinfo WHERE  phone='".$data['phones']."'";
             $sth = $DBC->prepare($query2);
             $sth->execute();
             $result2 = $sth->fetchAll();
             echo json_encode($result2);
             $i++;  
           }    
}           
catch(PDOException $e) {
     echo 'Error';   
}

これは私が使用している JQuery コードです。

$.ajax({
    type: "POST",
    url: "getinfo.php",              
    dataType:'json',
    data: {arrayUserPhoneNumbers : arrayUserPhoneNumbers,intUserID : intUserID},
success: function(data) {
}
});

私の質問は次のとおりです:私は多くの行を取得していますが、これは最後の行にすぎません.firebugコンソールから取得しているJSON結果は次のとおりです:

[
    {
        "txtshare": "F",
        "0": "F",
        "dtzserver": "2013-01-05 00:32:55.311037+00",
        "1": "2013-01-05 00:32:55.311037+00",
        "phone": "+33522988655",
        "2": "+33522988655",
        "issue": "Lost my smartphone",
        "3": "Lost my smartphone"
    }
]

私のJSONは有効ですが、この結果に重複データを持つ「0」、「1」、「2」、「3」のインデックスがあるのはなぜですか? 私のテーブルには、txtshare、dtzserver、phone、および issue フィールドしかありません。私はそれがこのようになりたい:

[
        {
            "txtshare": "F",
            "dtzserver": "2013-01-05 00:32:55.311037+00",
            "phone": "+33522988655",
            "issue": "Lost my smartphone",
        }
 ]

前もって感謝します。

4

1 に答える 1

0

返されるJSONには、キー=>値のペアと配列インデックス形式の両方が含まれていることがわかる場合があります。そのため、いずれか1つを選択する必要があります。訪問:http://php.net/manual/en/function.json-encode.php

echo "Sequential array".PHP_EOL;
$sequential = array("foo", "bar", "baz", "blong");
var_dump(
 $sequential,
 json_encode($sequential)
);

echo PHP_EOL."Non-sequential array".PHP_EOL;
$nonsequential = array(1=>"foo", 2=>"bar", 3=>"baz", 4=>"blong");
var_dump(
 $nonsequential,
 json_encode($nonsequential)
);

echo PHP_EOL."Sequential array with one key unset".PHP_EOL;
unset($sequential[1]);
var_dump(
 $sequential,
 json_encode($sequential)
);

出力:

シーケンシャル配列array(4){[0] => string(3) "foo" [1] => string(3) "bar" [2] => string(3) "baz" [3] => string( 5) "blong"} string(27) "[" foo "、" bar "、" baz "、" blong "]"

非順次配列array(4){[1] => string(3) "foo" [2] => string(3) "bar" [3] => string(3) "baz" [4] => string(5) "blong"} string(43) "{" 1 ":" foo "、" 2 ":" bar "、" 3 ":" baz "、" 4 ":" blong "}"

1つのキーが設定されていない順次配列array(3){[0] => string(3) "foo" [2] => string(3) "baz" [3] => string(5) "blong"} string( 33) "{" 0 ":" foo "、" 2 ":" baz "、" 3 ":" blong "}"

于 2013-01-23T08:08:32.510 に答える