将字符串关联数组转换为仅包含整数值的扁平数组

5
我不知道如何获取数组1并将其转换成数组2的形式,以便我可以将其作为参数发送到我的预处理语句方法中。
数组1:(当前拥有的内容)
array(5) { [0]=> array(2) { ["id"]=> string(1) "1" [0]=> string(1) "1" } [1]=> array(2) { ["id"]=> string(3) "314" [0]=> string(3) "314" } [2]=> array(2) { ["id"]=> string(3) "315" [0]=> string(3) "315" } [3]=> array(2) { ["id"]=> string(3) "316" [0]=> string(3) "316" } [4]=> array(2) { ["id"]=> string(3) "317" [0]=> string(3) "317" } } 

数组2:我想让它变成什么样子。(请忽略缺少1个项目的情况)
array(4) { [0]=> int(314) [1]=> int(315) [2]=> int(316) [3]=> int(317) }

我正在尝试使用PHP php7.1完成此操作,如果有影响的话。
我认为这已经足够的信息了,但如果不是,请告诉我。我只是不想用各种代码和解释来困扰你,我不确定你是否需要。
到目前为止我尝试过的(虽然可能不正确):
$category_ids2 = array_values($category_ids);

关键在于正确遍历第一个数组。请查看这篇文章。然后,您只需要获取各个值并填充您的简单数组即可。 - Paulo Hgo
3个回答

5

有一个用于提取一列的函数,另一个用于转换为整数

$category_ids = array_map('intval', array_column($category_ids, 'id'));

没有 array_column:

$category_ids = array_map(function($v) { return (int)$v['id']; }, $category_ids);

然而,这看起来非常像数据库结果。如果是这样的话,在获取结果时只需按照您想要的方式构建数组即可。此外,使用数据库库的 fetch assoc 将消除每个数组中的 0 索引。


非常感谢您的帮助。您是100%正确的,这是数据库结果,但由于我对PHP非常陌生,甚至对PDO更陌生,因此我很难在不使用PDO后处理转换的情况下进行查询。不过,既然我现在知道似乎是可能的,我会尝试做更多的研究。非常感谢您:)。 - Brett Williams
在您的指导下,我能够直接从查询中找出如何做到这一点。非常感谢您:D。对于那些感兴趣的人,可以在此处找到答案。https://dev59.com/VG025IYBdhLWcg3wX03z - Brett Williams
抱歉,这是我的第一篇帖子,没有意识到需要标记它们。我现在认为我已经这样做了。(如果那就是勾选框的话) - Brett Williams

1
$array = [['id' => '1', '0' => '1'], 
      ['id' => '314', '0' => '314'],
      ['id' => '315', '0' => '315'],
      ['id' => '316', '0' => '316'],
      ['id' => '317', '0' => '317']];

echo "<pre>";

$ids = array_column($array, 'id');


unset($ids['0']); 
var_dump($ids);

$integerIDs = array_map('intval', $ids);

var_dump($integerIDs);

说明:

  1. 您应该使用 array_column 来获取 ids http://php.net/manual/en/function.array-column.php
  2. 如果不需要位置零,则取消设置
  3. array_map('intval', $ids); 将每个值转换为 int

0

首先使用array_column来展开数组。然后结合array_mapintval将字符串转换为整数。最终代码如下:

$category_ids2 = array_map('intval', array_column($category_ids, 'id'));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接