PHP 将一个数组附加到另一个数组(不array_push或 +)

2022-08-30 06:00:48

如何在不比较其键的情况下将一个数组附加到另一个数组?

$a = array( 'a', 'b' );
$b = array( 'c', 'd' );

最后应该是:如果我使用类似或的东西,它将导致以下结果之一:Array( [0]=>a [1]=>b [2]=>c [3]=>d )[]array_push

Array( [0]=>a [1]=>b [2]=>Array( [0]=>c [1]=>d ) )
//or
Array( [0]=>c [1]=>d )

它应该是某种东西,这样做,但以一种更优雅的方式:

foreach ( $b AS $var )
    $a[] = $var;

答案 1

array_merge是优雅的方式:

$a = array('a', 'b');
$b = array('c', 'd');
$merge = array_merge($a, $b); 
// $merge is now equals to array('a','b','c','d');

执行如下操作:

$merge = $a + $b;
// $merge now equals array('a','b')

将不起作用,因为运算符实际上并未合并它们。如果它们具有 与 相同的键,则不会执行任何操作。+$a$b


答案 2

在 PHP 5.6+ 中执行此操作的另一种方法是使用令牌...

$a = array('a', 'b');
$b = array('c', 'd');

array_push($a, ...$b);

// $a is now equals to array('a','b','c','d');

这也将适用于任何Traversable

$a = array('a', 'b');
$b = new ArrayIterator(array('c', 'd'));

array_push($a, ...$b);

// $a is now equals to array('a','b','c','d');

不过有一个警告:

  • 在7.3之前的PHP版本中,如果它是空数组或不可遍历(例如不是数组),这将导致致命错误$b
  • 在 PHP 7.3 中,如果 不可遍历,则会引发警告$b