我在这里有一个问题 array_combine()
警告:array_combine():两个参数在第X行的PATH中应该具有相同数量的元素
此错误显示在以下行:
foreach(array_combine($images, $word) as $imgs => $w)
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
Ana*_*nki 18
当您尝试组合两个长度不等的数组时,会出现此错误.举个例子:
Array 1: Array (A, B, C) //3 elements
Array 2: Array (1, 2, 3, 4) //4 elements
Run Code Online (Sandbox Code Playgroud)
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";
}
?>
Run Code Online (Sandbox Code Playgroud)
您可以组合这两个数组,并且只使用与较小数组一样多的元素:
<?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));
?>
Run Code Online (Sandbox Code Playgroud)
或者你也可以填补缺失的元素:
<?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);
?>
Run Code Online (Sandbox Code Playgroud)
注意:在所有示例中,您总是希望确保keys数组只包含唯一元素!因为否则PHP只会用相同的密钥覆盖元素,你只会保留最后一个元素.
| 归档时间: |
|
| 查看次数: |
23026 次 |
| 最近记录: |