0

これは、PHP を使用して mysql データをクエリするときに頻繁に遭遇する問題であり、より効率的な解決策があるかどうかを知りたい. たとえば、「id」列と「price」列のように 2 列のデータのみが必要な場合は、この「フラット」形式を好みます。

array(
    id 1 => price 1,
    id 2 => price 2,
    id 3 => price 3,
    ...
);

またはjsonで:

[{"id 1":"price 1"},{"id 2":"price 2"},{"id 3":"price 3"}, ...]

そして、私の通常の解決策は、次のように 2 回ループすることです。

require_once('server/connection.php');
$info = mysql_query("SELECT id, price FROM table");  

$array1 = array();
while ($row = mysql_fetch_assoc($info)) {
    $array1[] = array(
        'id' => $row['id'],
        'price' => $row['price']
    );
}
mysql_close($con);

$array2 = array();
foreach ($array1 as $key => $value) {
    $array2[$key][$value['id']] = $value['price'];
}

print json_encode($array2);

これは機能しますが、このコードは目的に対して長すぎると思います。より良い方法があるはずです。つまり、1 つの配列をループするだけで済みます。助言がありますか?

4

3 に答える 3

0
$result = array();
while ($row = mysql_fetch_assoc($info)) {
    $result[$row['id']] = $row['price'];
}
print_r($result);
于 2012-08-15T15:03:35.997 に答える
0
require_once('server/connection.php');
$info = mysql_query("SELECT id, price FROM table");  

$array1 = array();
while ($row = mysql_fetch_assoc($info))
    $array1[$row['id']] = $row['price'];
mysql_close($con);

print json_encode($array1);

注: $array2 は 2 次元配列です。それが機能する場合は、次のフラット形式を処理するように JavaScript コードを変更する必要があります。つまり、上記のコードは生成します

[{"id 1":"price 1"},{"id 2":"price 2"},{"id 3":"price 3"}, ...]
于 2012-08-15T15:09:17.943 に答える
0

ループをこれに単純化できます

while ($row = mysql_fetch_assoc($info)) {
    $array1[] = array(
        'id '.$row['id'] => 'price '.$row['price']
    );
}

print json_encode($array1);
于 2012-08-15T14:55:51.697 に答える