在循环中创建一个没有键的数组

24
这可能是个脑抽,因为已经很晚了,但我卡在这里了。
我需要从一个select框中获取一个$_POST值。(它是一个数组),并将其转换为一个没有任何键的简单数组。
以下是该项的print_r: Array ( [0] => 19 [1] => 18 [2] => 21 ) 问题是,我需要一个看起来像这样的数组: Array(19,18,21) 每当我尝试通过表单字段进行foreach()操作时,我必须这样做: $row[] = $val; 但那会留下一个数字索引。
我漏掉了什么?
谢谢。

你说你需要一个Array(19,18,21),但这种类型的数组具有数字索引...唯一的其他选择是将Array视为带有键的字典。 - eat_a_lemon
@eat_a_lemon:这里的“问题”是,PHP将两者视为相同。在PHP中,数组是一个字典(更详细地说,是哈希表),其整数键从0开始。 - KingCrunch
4个回答

22

没有键的数组是不存在的。

Array(19,18,21)

这个数组的键是0、1和2。


3
即使PHP不关注此事,键和索引之间存在语义差异。 - KingCrunch
谢谢。结果发现问题是类型的问题。我感觉很蠢。 - jdp

10

在PHP中,数组始终具有(至少)数字索引。但是,您可以通过array_values()提取给定数组的值。它仅返回给定数组的值。当然,它具有索引,但它们是连续的,并且它们是数字的。这是您可以在PHP中拥有的最简单的数组表示形式。

更新一下,只是为了让这一点更清楚:您不能在PHP中没有索引的数组(据我所知,在任何其他语言中也是如此),因为内部数组始终是哈希映射,而哈希映射始终需要一个键。 “最常见的键”是索引。您无法省略“键”。另一方面,我不知道为什么有人会想要这样做。如果您不想使用键,则只需不使用键,这确实就是全部。在这一点上,PHP非常友善。


只是提醒一下,称某物为 array 暗示着它有顺序,而 hash 通常意味着存在字符串键(在 PHP 中这两个结构是相同的)。在其他语言中,OP所描述的通常称为 setunordered list - Ryan Taylor

1
你能做到的最接近的方法是将键和值组合在一起。
array_combine($array1,$array1) 

0
你可以尝试使用Array_column函数(输入数组名称和需要获取的位置),然后打印输出结果(print_r)。

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