我在array_combine()中遇到问题
Warning: array_combine(): Both parameters should have an equal number of elements in PATH on line X
foreach(array_combine($images, $word) as $imgs => $w)
{
//do something
}
我该如何解决?
解决方法:
当您尝试组合两个长度不等的数组时,会出现此错误.举个例子:
Array 1: Array (A, B, C) //3 elements
Array 2: Array (1, 2, 3, 4) //4 elements
array_combine()无法组合这两个数组并将发出警告.
您可以检查两个数组是否具有相同数量的元素,只有在它们执行时才合并它们:
<?PHP
$arrayOne = Array("A", "B", "C");
$arrayTwo = Array(1, 2, 3);
if(count($arrayOne) == count($arrayTwo)){
$result = array_combine($arrayOne, $arrayTwo);
} else{
echo "The arrays have unequal length";
}
?>
您可以组合这两个数组,并且只使用与较小数组一样多的元素:
<?PHP
$arrayOne = Array("A", "B", "C");
$arrayTwo = Array(1, 2, 3);
$min = min(count($arrayOne), count($arrayTwo));
$result = array_combine(array_slice($arrayOne, 0, $min), array_slice($arrayTwo, 0, $min));
?>
或者你也可以填补缺失的元素:
<?PHP
$arrayOne = Array("A", "B", "C");
$arrayTwo = Array(1, 2, 3);
$result = [];
$counter = 0;
array_map(function($v1, $v2)use(&$result, &$counter){
$result[!is_null($v1) ? $v1 : "filler" . $counter++] = !is_null($v2) ? $v2 : "filler";
}, $arrayOne, $arrayTwo);
?>
Note: That in all examples you always want to make sure the keys array has only unique elements! Because otherwise PHP will just overwrite the elements with the same key and you will only keep the last one.