PHP如何在不重新排序数组的情况下向数组开头添加元素?

5
我尝试搜索了解答案,但没有找到不使用循环而不重新排列数字索引的方法。
有没有一种方法可以在不重新排序键(数值键)的情况下将字符串添加到数组的开头?
谢谢。
编辑:
我将尝试解释场景。(我正在使用CodeIgniter)。
我有一个在整个应用程序中使用的数组。该数组还用于创建下拉列表,并验证我拥有的表单中的这些下拉列表值。我想要做的是在数组的开头插入空值,以便我的下拉列表具有默认选择空选项。
所以从这个
1 => Hello 2 => World

'' => '' 1 => Hello 2 => World

我不确定你的意思。有任何示例输入/输出吗? - BoltClock
新元素应该具有什么索引?为什么需要这个条件(不重新排序键)?如果您无论如何都通过键访问元素,那么顺序并不重要。如果您遍历它们,那么索引也无关紧要。所以你为什么需要它呢?也许您的情况有更好的策略。 - Felix Kling
@BoltClock @Felix-Kling @yoda - 我已经在我的原始帖子中尝试解释了一些 - 谢谢。 - RS7
1个回答

9

由于您不想改变数字索引,我认为array_unshift无法使用。

因此,如果您知道索引,可以像这样操作:

$x = array(1 => 1, 2 => 2, 3 => 3); 
$y = array(1101 => 123);
var_dump( $y + $x );

/* Output:
array(4) {
  [1101]=>
  int(123)
  [1]=>
  int(1)
  [2]=>
  int(2)
  [3]=>
  int(3)
}
*/

请注意,现在关键字确实在数组前面,因此foreach将正常工作。

编辑的回应:

$x = array(1 => "Hello", 2 => "Welt"); 
$y = array("" => "");

var_dump($y + $x);

/*
array(3) {
  [""]=>
  string(0) ""
  [1]=>
  string(5) "Hello"
  [2]=>
  string(4) "Welt"
}
*/

1
这种方法的问题在于,如果你有相冲突的键,它们将被覆盖。 - hadees

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