问题:
我有一个在$ record中设置的值,例如1.69。然后我有一个包含不同等级和值的数组。我想先将$ record与最高值进行比较,看它是否高于或等于,如果不是低于它的值,依此类推。
PHP代码:
$record1 = '1.69';
$record2 = '2.90';
$record3 = '3.40';
$record4 = '3.80';
数组($ grade):
Array
(
[G] => 2.8
[VG] => 3.8
)
情境:
$ record1应该与数组中的最高值进行比较,这将返回false。它将与最高值之下的值进行比较,该值也将返回false。如果两者都返回false,则返回字符串'U',否则返回键G或VG。
问题:
我可以做很多if语句作为解决方案,但我想知道是否有更聪明的方法以更好的方式进行此检查?
答案 0 :(得分:1)
我会编写一个循环遍历$grades
数组的函数,设置结果的值,并在值大于输入时立即中断。
像这样(未经测试):
function returnGrade($record, $grades)
{
$return = 'U';
foreach ($grades as $key => $value)
{
if ($record >= $value)
{
$return = $key;
}
else
{
break;
}
}
return $return;
}
答案 1 :(得分:1)
首先,尝试按降序对数组进行排序。
然后,在while循环中,检查初始数组元素(使用key()函数)是大于还是小,如果为FALSE,请使用next()函数移动到下一个元素并进行比较。< / p>
当你想要的比较返回TRUE时,循环应该结束。
答案 2 :(得分:1)
使用简单的逻辑:
$grades = array('G' => 2.8, 'VG' => 3.8);
$records = array(1.69, 2.9, 3.4, 3.8);
foreach ($records as $v) {
$res = ($v < $grades['G'] ? 'U' : ($v < $grades['VG'] ? 'G' : 'VG'));
echo "$v = $res\n";
}
/*
1.69 = U
2.9 = G
3.4 = G
3.8 = VG
*/
答案 3 :(得分:0)
你可以这样做
首先按循环次数循环旋转,并通过此函数检查该值是否在数组中in_array()
如果找到结果,则通过此函数array_search("value_to_search","array_variable");
希望这会对你有所帮助