使用PHP检查数组中值和返回键的值

时间:2012-06-12 18:27:10

标签: php arrays if-statement comparison logic

问题:

我有一个在$ 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。

  • 记录1应该产生U。
  • 记录2应该产生G.
  • 记录3应该产生G.
  • 记录4应该产生VG。

问题:

我可以做很多if语句作为解决方案,但我想知道是否有更聪明的方法以更好的方式进行此检查?

4 个答案:

答案 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");

获取密钥

希望这会对你有所帮助