gpt4 book ai didi

php - 使用 mysqli_fetch_all 使用列定义键

转载 作者:行者123 更新时间:2023-11-29 11:39:48 25 4
gpt4 key购买 nike

我有一个查询,该查询从数据库获取有关画廊类别的信息并将其加载到数组中,以便在整个脚本的多个位置使用。

$q_gals = "SELECT `gal_id`, `gal_name` FROM `cms_galleries` ORDER BY `gal_sort` ASC, `gal_id` DESC";
$r_gals = $dbc->query($q_gals);
if (($r_gals) && ($r_gals->num_rows > 0)) {
$galleries = $r_gals->fetch_all(MYSQLI_ASSOC);
}

我希望将 $galleries 数组的键作为查询中的 gal_id 值。我知道我可以简单地通过使用 while 循环迭代结果并根据需要手动构建数组来完成此操作:

$galleries = array();
while($row_gal = $r_gal->fetch_assoc()) {
$galleries[$row_gal['gal_id']] = $row_gal['gal_name'];
}

老实说,主要是 fetch_all 为我提供的更整洁的代码让我想要这样做。这不是一个庞大的脚本,两者之间的任何性能差异都是无关紧要的。我想我可以循环遍历现有数组并使用 gal_id 值更新键,但这似乎弄巧成拙。

这是我的一厢情愿吗?或者是否有一些晦涩的技巧可以实现这一点?

最佳答案

我将在这里做出一些假设,第一个也是最重要的是您使用的是 PHP 5.5 或更高版本,第二个是您只是想避免 for 循环,而不是实际执行一些 SQL 魔法。 ..

要仅用一行代码实现此目的,您需要使用几个容易错过的 PHP 数组函数; array_column()array_combine() .

代替 for 循环的代码将如下所示:

$galleries = array_combine(array_column($galleries, 'gal_id'), $galleries);

array_columns() 调用根据定义的列创建一个数组,因此最终会得到一个仅包含“gal_id”值的数组。然后 array_combine() 使用第一个数组作为数组键值将第一个数组与第二个数组合并。

关于php - 使用 mysqli_fetch_all 使用列定义键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36007231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com