在 PHP 和 MySQL 中从 2 列创建关联数组

问题描述 投票:0回答:4

我可以用两列创建一个关联数组吗?我希望 A 列作为键,B 列作为值。

-------------
| id | name  |
-------------
| 1  | sky   |
-------------
| 2  | space |

我想要一个能够产生如下结果的函数:

$ary=array('1'=>'sky','2'=>'space', ... );

有关于这个问题的php函数吗?

我正在使用 php、mysql 和 codeigniter。

php mysql arrays associative
4个回答
12
投票
$ary = array();
while ($row = $stmt->fetch_assoc()) {
    $ary[$row['id']] = $row['name'];
}

1
投票

即使您使用的是 codeigniter,您也不需要使用 codeigniter 的库。如果您愿意实现 PDO 实现,您可以在本机 PHP 中执行类似的操作:

$stmt = $db->query("select id, name from mytable");
$results  = $stmt->fetchAll(PDO::FETCH_KEY_PAIR);

与其他一些实现相比,这种方式的开销会更少,但这取决于您是否想使用 PDO。


1
投票

由于您使用的是 Codeigniter,请使用其结果集辅助方法,然后调用

array_column()
将两列转换为平面关联数组。

var_export(
    array_column(
        $this->query($sql)->result(),
        'name',
        'id'
    )
);

如果您只是使用 PHP 的本机 mysqli:

程序风格:

$result = mysqli_query($conn, $sql);
var_export(
    array_column(
        mysqli_fetch_all($result, MYSQLI_ASSOC),
        'name',
        'id'
    )
);

面向对象风格:

$result = $conn->query($sql);
var_export(
    array_column(
        $conn->fetch_all($result, MYSQLI_ASSOC),
        'name',
        'id'
    )
);

可以立即迭代结果集对象:(Demo)

$result = [];
foreach ($mysqli->query($sql) as $row) {
    $result[$row['id']] = $row['name'];
}
var_export($result);

您甚至可以在无体循环中使用数组解构。

$result = [];
foreach ($mysqli->query($sql) as ['id' => $id, 'name' => $result[$id]]);
var_export($result);

0
投票
foreach($rows as $key => $value){
    $arr[$key] = $value;
}
© www.soinside.com 2019 - 2024. All rights reserved.