更好的澄清版本
$x = ['x', 'y', 'z'];
$a = ['a', 'b', 'c'];
$array = array_merge($x, $a);
print_r($array);
工作正常,给我以下数组
Array ( [0] => x [1] => y [2] => z [3] => a [4] => b [5] => c )
但是我有这样的陈述[在合并部分是完全错误的]
$x = ['x', 'y', 'z'];
if(isset($_GET['z'])){
$a = ['a', 'b', 'c'];
}
$array = array_merge($x, $a); //need to assign that to a variable!
print_r($array);
但是我无法将这样的$a添加到array_merge()
中,因此将它们分配给如下所示的变量
$x = ['x', 'y', 'z'];
if(isset($_GET['z'])){
$a = ['a', 'b', 'c'];
}
$merging = [$x];
if(isset($_GET['z'])){
array_unshift($merging, $a);
}
$array = array_merge($merging);
print_r($array);
但我得到的是
Array (
[0] => Array ( [0] => a [1] => b [2] => c )
[1] => Array ( [0] => x [1] => y [2] => z )
)
我想要的是一个包含所有值的数组,就像第一个示例数组一样。
如果存在$_GET['z']
,我想获取值
Array ( [0] => a [1] => b [2] => c [3] => x [4] => y [5] => z )
如果$_GET['z']
不存在,我只需要这些值
Array ( [0] => x [1] => y [2] => z )
从 PHP 5.6 开始,您可以使用 splat 运算符来取消移动$a
的每个元素,而不是数组本身。
$a = ['a', 'b', 'c'];
$x = ['x', 'y', 'z'];
array_unshift($x, ...$a);
print_r($x);
哪些输出
Array
(
[0] => a
[1] => b
[2] => c
[3] => x
[4] => y
[5] => z
)
我认为根本不需要临时$merging
阵列和随后的array_merge
——下面就可以了。
$array = ['x', 'y', 'z'];
if(isset($_GET['z'])){
$a = ['a', 'b', 'c'];
array_unshift($array, ...$a);
}
print_r($array);
如果未设置$_GET['z']
数组,则将在此处['x', 'y', 'z']
数组,如果设置数组,则['a', 'b', 'c', 'x', 'y', 'z']
数组。
在 5.6 之前,您可以简单地使用以下形式的array_splice
代替array_unshift
:
array_splice($x, 0, 0, $a);
你似乎把事情复杂化了:
$result = isset($_GET['z']) ? array_merge(['a','b','c'],$x) : $x;
print_r($result);