警告:array_combine():两个参数应具有相同数量的元素


Warning: array_combine(): Both parameters should have an equal number of elements

我在array_combine()这里有问题

警告:array_combine():两个参数在 X 行的 PATH 中应具有相同数量的元素

此错误显示在以下行中:

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);
?>

注意:在所有示例中,您始终希望确保 keys 数组只有唯一的元素!因为否则 PHP 只会用相同的键覆盖元素,而你只会保留最后一个。

您可以使用

array_merge而不是array_combine

例:

array_merge($myFirstArray, $mySecondArray);