$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 )
答案 0 :(得分:1)
从PHP 5.6开始,您可以使用splat operator来取消$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);
如果未设置['x', 'y', 'z']
,则此数组将为$_GET['z']
,如果已设置,则为['a', 'b', 'c', 'x', 'y', 'z']
。
在5.6之前,您只需使用以下表单中的array_splice
代替array_unshift
:
array_splice($x, 0, 0, $a);
答案 1 :(得分:1)
你似乎过于复杂化了:
$result = isset($_GET['z']) ? array_merge(['a','b','c'],$x) : $x;
print_r($result);