微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我在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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐