根据数组中的值检查值并使用 PHP 返回键
Posted
技术标签:
【中文标题】根据数组中的值检查值并使用 PHP 返回键【英文标题】:Check value against values in array and return key using PHP 【发布时间】:2012-06-15 16:26:11 【问题描述】:问题:
我在 $record 中设置了一个值,例如 1.69。然后我有一个包含不同等级和值的数组。我想先将 $record 与最高值进行比较,看看它是否高于或等于,如果不是,则转到低于它的值,依此类推。
PHP 代码:
$record1 = '1.69';
$record2 = '2.90';
$record3 = '3.40';
$record4 = '3.80';
数组($grades):
Array
(
[G] => 2.8
[VG] => 3.8
)
场景:
$record1 应该与数组中的最大值进行比较,这将返回 false。它将与低于最高值的值进行比较,该值也将返回 false。如果两者都返回 false 则返回字符串 'U',否则返回键 G 或 VG。
记录 1 应该产生 U。 记录 2 应该产生 G。 记录 3 应该产生 G。 记录 4 应该产生 VG。问题:
我可以做很多 if 语句作为解决方案,但我想知道是否有任何聪明的方法可以更好地进行此检查?
【问题讨论】:
记录变量有多少? +1 用于明确定义问题。你有能力创建一个$record
数组而不是自变量?
总是只有 1 个 $record 变量。
【参考方案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
*/
【讨论】:
【参考方案2】:我会编写一个函数,循环遍历您的 $grades
数组,设置结果的值并在值大于输入时立即中断。
类似这样的东西(未经测试):
function returnGrade($record, $grades)
$return = 'U';
foreach ($grades as $key => $value)
if ($record >= $value)
$return = $key;
else
break;
return $return;
【讨论】:
【参考方案3】:首先,尝试对数组进行降序排序。
然后,在while循环中,检查初始数组元素(使用key()函数)是否更大或更小,如果为FALSE,使用next()函数移动到下一个元素并进行比较。
当您想要的比较返回 TRUE 时,循环应该结束。
【讨论】:
【参考方案4】:你可以这样做
首先按记录数循环循环,并通过此函数检查值是否在数组中in_array()
如果找到结果则通过此函数获取密钥array_search("value_to_search","array_variable");
希望对你有帮助
【讨论】:
以上是关于根据数组中的值检查值并使用 PHP 返回键的主要内容,如果未能解决你的问题,请参考以下文章