【问题标题】:Create simple numeric PHP array from MySQL result [duplicate]从 MySQL 结果创建简单的数字 PHP 数组 [重复]
【发布时间】: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');

标签: php mysqli


【解决方案1】:

您将整个 $row 分配给您的 numbers 数组,这会将整个行作为数组中的值提供给您。

听起来你只需要值,所以你应该只分配你想要的列:

$numbers_ms_array[] = $row['round'];

【讨论】:

  • 谢谢你,一个简单的补充,我很接近......我是一个业余程序员,所以希望它会是我错过的一些愚蠢的东西。
猜你喜欢
  • 2015-08-11
  • 2021-12-14
  • 2015-11-24
  • 2012-04-20
  • 2015-08-28
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
  • 2011-04-08
相关资源
最近更新 更多