这是我在使用PHP查询mysql数据时经常遇到的问题,我想知道是否有更有效的解决方案。当我只需要两列数据时,例如列'id'和'price',我更喜欢这种“扁平”格式:
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"}, ...]
我通常的解决方案是循环两次,如下:
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);
哪个确实有效,但我觉得这个代码太长了,它应该有一个更好的方法 - 所以我只需循环一个数组。有什么建议吗?
答案 0 :(得分:0)
您可以将循环简化为此
while ($row = mysql_fetch_assoc($info)) {
$array1[] = array(
'id '.$row['id'] => 'price '.$row['price']
);
}
print json_encode($array1);
答案 1 :(得分:0)
$result = array();
while ($row = mysql_fetch_assoc($info)) {
$result[$row['id']] = $row['price'];
}
print_r($result);
答案 2 :(得分: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是一个二维数组。如果它适合您,您需要更改您的javascript代码以处理以下平面格式,即上面的代码生成
[{"id 1":"price 1"},{"id 2":"price 2"},{"id 3":"price 3"}, ...]