如果指定参数之一不是数组,则阻止 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);
?>
我希望 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);
?>