【发布时间】:2022-01-24 16:16:27
【问题描述】:
如果我在 PHP 中创建一个手动数组:
$numbers = array(3,5,7,8,10,12);
然后,在 $j 递增的循环中,我可以使用:
if (in_array($j, $numbers)) { //THIS } else { //THAT }
在循环的第三次、第五次、第七次、第八次、第十次和第十二次迭代中执行“这个或那个”的一些逻辑。
我希望 $numbers 的内容来自 MySQL 查询结果。
但是,如果我使用以下代码获取一个数组,则该数组的构建方式不同,我无法从 in_array 引用它($conn 显然是此处未提供的连接详细信息):
$numbers_from_query_sql= "SELECT (round*1) as round FROM event";
$numbers_from_query = mysqli_query($conn, $numbers_from_query_sql);
$numbers_ms_array= array();
while ($row = mysqli_fetch_assoc($numbers_from_query)) {
$numbers_ms_array[] = $row;
}
上面的 var_dump($numbers_ms_array) 产生:
array(6) { [0]=> array(1) { ["round"]=> string(1) "3" } [1]=> array(1) { ["round"]=> string(1) "5" } [2]=> array(1) { ["round"]=> string(1) "7" } [3]=> array(1) { ["round"]=> string(1) "8" } [4]=> array(1) { ["round"]=> string(2) "10" } [5]=> array(1) { ["round"]=> string(2) "12" } }
如果我随后将 $numbers_ms_array 传递给 in_array 代码,则它不起作用。
请注意,在数据库中,'round' 列是 varchar(3)。
如何从我的 MySQL 查询结果中获取一个简单的数组(如我的第一个手动示例)(如果还需要,所有结果都为整数)?
【问题讨论】:
-
$numbers = array_map($numbers_ms_array, function($element) { return (int)$element['round']; }); -
$numbers = array_column($numbers_ms_array, 'round');