如果指定参数之一不是数组,则阻止 array_merge 合并数组

Prevent array_merge from merging an array if one of the specified argument is not an array

我希望 array_merge 仅当指定的参数是数组时才合并,否则跳过该参数。

下面是代码,

<?php

$mergedArray = array();
$a = array('Hello');
$b = array('Hi');
$c = 'World';
$mergedArray = array_merge($mergedArray, $a, $b, $c);
print_r($mergedArray);

?>

对于上面的代码,我收到一条警告,指出 $c 不是数组。 我知道将其转换为数组可以解决问题,

$mergedArray = array_merge($mergedArray, $a, $b, (array)$c);

但是,$c can be an array or a string,如果它是一个字符串,我不想将它作为参数包含在我的 array_merge 中,如果它是一个数组,我希望它被包含在内。 php中有没有直接的方法可以做到,还是需要写在if-else语句中。

编辑: 如果我通过检查 is_array($c) 来包含一个空数组,这并没有什么不同。但是,如果我必须使用定界符将结果内爆,则会导致问题,

修改代码,

<?php

$mergedArray = array();
$a = array('Hello');
$b = array('Hi');
$c = 'World';
$mergedArray = array_merge($mergedArray, $a, $b, is_array($c) ? $c : []);
$result = implode(' | ', $mergedArray);
print_r($mergedArray);

?>

现在对于上面的代码,in case of an empty array,我将 get | at the end of $result 我不想要的。

 <?php
   $mergedArray = array();
   $a = array('Hello');
   $b = array('Hi');
   $c = 'World';
   if (is_array($c)) {
     $mergedArray = array_merge($mergedArray, $a, $b, $c);
   } else {
     $mergedArray = array_merge($mergedArray, $a, $b);
   }
   print_r($mergedArray);
?>

使用is_array函数检查变量是否为数组。

$mergedArray = array_merge($mergedArray, $a, $b, is_array($c) ? $c : array());

如果$c是一个数组,合并它。如果不是,则与不影响结果的空数组组合。

你可以在合并之前检查它是否是一个数组。

<?php
$mergedArray = array();
$a = array('Hello');
$b = array('Hi');
$c = 'World';

if (!is_array($c))
{
    $mergedArray = array_merge($mergedArray, $a, $b, array($c));
}

print_r($mergedArray);
?>