Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 警告:array_combine():两个参数的元素数应该相等_Php_Arrays - Fatal编程技术网

Php 警告:array_combine():两个参数的元素数应该相等

Php 警告:array_combine():两个参数的元素数应该相等,php,arrays,Php,Arrays,我在array\u combine() 警告:array_combine():两个参数在X行的路径中的元素数应该相等 此错误显示在以下行上: foreach(array_combine($images, $word) as $imgs => $w) { //do something } 如何修复它?当您尝试组合两个长度不等的数组时,会出现此错误。例如: Array 1: Array (A, B, C) //3 elements Array 2: Array (1, 2,

我在
array\u combine()

警告:array_combine():两个参数在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\u 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只会用相同的键覆盖元素,而只保留最后一个键


您是否尝试在两个数组中放置相同数量的元素?每个数组的元素数量应该相等,以便数组_combine()正常工作。我要做的是,例如,用户错误地添加了空值,如何避免出现此错误?我指的是数组_combine()的错误处理当元素不相等时,请提供样品?