我尝试比较两个不同数组中的字符串,并输出两个数组之间的差异数量。我做错了什么?谢谢!
<?php
$names = ['Tina', 'Dana', 'Mike', 'Amy', 'Adam'];
$compare = ['Tina', 'Dean', 'Mel', 'Amy', 'Michael'];
function outputDifferences($array1, $array2){
$pushedArray = [];
$result = array_diff($array1, $array2);
// loop through the array
for($i = 0; $i < count($result[$i]) -1; $i++){
array_push($pushedArray, $result[$i]);
$outcome = count($pushedArray);
}
return $outcome;
var_dump($outcome);
}
outputDifferences($names, $compare);发布于 2017-04-07 10:12:57
您将在代码中演示您熟悉count()函数。为什么不直接用它来返回你想要的数字呢?
<?php
function outputDifferences($array1, $array2){
$result = array_diff($array1, $array2);
return count($result);
}
$names = ['Tina', 'Dana', 'Mike', 'Amy', 'Adam'];
$compare = ['Tina', 'Dean', 'Mel', 'Amy', 'Michael'];
echo outputDifferences($names, $compare);至于您的原始代码不能正常工作的原因,array_diff()的文档说它“返回array1中没有出现在任何其他数组中的值”,其中包括它们的键。在您的示例中,元素0在两个数组中是相同的,因此没有元素0。你的for循环一定会失败。使用foreach循环遍历稀疏(即非连续)数组。
https://stackoverflow.com/questions/43268456
复制相似问题