【发布时间】:2015-06-20 13:09:39
【问题描述】:
我有一个函数,它检查两个数组并返回两个数组中的共同最小值。当两个数组具有相同数量的元素时,IT 将返回正确答案。但是另一个更大,它不会返回正确的那个。如何克服?
<?php
$A = array(0);
$B= array(1,0);
$n = sizeof($A);
$m = sizeof($B);
sort($A);
sort($B);
$i = 0;
for ($k = 0; $k < $n; $k++) {
if ($i < $m - 1 AND $B[$i] < $A[$k])
$i += 1;
if ($A[$k] == $B[$i])
echo $A[$k];
}
echo "end";
?>
谢谢
【问题讨论】:
-
这看起来很 C 风格,这会导致你在 PHP 中出现问题。我们有
foreach循环可以提高它的可读性。我们也有count而不是sizeof用于数组。 -
使用 PHP 函数
array_intersect和min -
像
$minimumCommonValue = min(array_intersect($A, $B));这样简单的东西有什么问题...除了如果没有共同值的错误处理 -
我可能会建议养成使用
&&而不是AND的习惯;这不是一个纯粹的风格选择:stackoverflow.com/questions/2803321/and-vs-as-operator