繁体   English   中英

PHP多维到平面数组(更改键->值)

[英]PHP multidimensional to flat array (changing key->value)

使用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);

确实可以,但是我认为这段代码对于它的目的来说太长了,应该有更好的方法-这样我只需要循环一个数组。 有什么建议么?

您可以简化您的循环

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

print json_encode($array1);
$result = array();
while ($row = mysql_fetch_assoc($info)) {
    $result[$row['id']] = $row['price'];
}
print_r($result);
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"}, ...]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM