代码未返回预期结果

时间:2014-05-21 14:43:02

标签: php arrays

根据$sFactorGradesGradeID,我需要CommutatorID来检索第0个元素,GradeID分别是数组中的第1个和第2个元素。

CommutatorIDfunction getMaximumSFactor($commuatorID, $gradeID) { $sFactorGrades = populateSFactorGrades(); $arraySize = count($sFactorGrades); for ($i = 0; $i < $arraySize; $i++) { if (intval($sFactorGrades[i][1]) == $commuatorID && intval($sFactorGrades[i][2]) == $gradeID) { return $sFactorGrades[i][0]; } else { return 0; } } } 作为参数传递给函数。

我写的代码没有返回我知道的值。

欢迎任何建议。

这是我的代码:

Array (
    [0] => Array (
        [0] => Maximum S Factor
        [1] => Commutator ID
        [2] => Grade ID
    )
    [1] => Array (
        [0] => 0.6
        [1] => 1
        [2] => 2
    )
    [2] => Array (
        [0] => 0.6
        [1] => 1
        [2] => 3
    )
    [3] => Array (
        [0] => 0.6
        [1] => 1
        [2] => 4
    )
)

这是我的数据:

0

这是我的结果:     {{1}}

3 个答案:

答案 0 :(得分:2)

我怀疑你的循环总是返回0的原因是你传递i作为递增变量,而不是正确的变量:$i。错别字可能是毁灭性的...如果它仍然不起作用,请随时更新您的帖子。

编辑:提示是在开发阶段将其插入页面顶部:

ini_set('display_errors','On');
error_reporting(E_ALL);

在这种情况下,它应该出现undefined index错误或类似错误。

答案 1 :(得分:1)

您的代码存在的问题是您过早返回。当您的代码遇到return语句时,它会停止迭代。您需要在循环外移动return语句以防止这种情况发生。

function getMaximumSFactor($commuatorID, $gradeID) {
    $sFactorGrades = populateSFactorGrades();
    $arraySize = count($sFactorGrades);
    for ($i = 0; $i < $arraySize; $i++) {
        if (intval($sFactorGrades[$i][1]) == $commuatorID && 
            intval($sFactorGrades[$i][2]) == $gradeID) {
            return $sFactorGrades[$i][0];
        }
    }
    return 0;
}

如果您的代码到达最后一个return,则表示永远不会满足if条件。对于getMaximumSFactor (1, 2),这应该返回0.2

Demo

答案 2 :(得分:1)

$sFactorGrades[i]需要$sFactorGrades[$i]。 另外值得使用foreach()而非普通for()。 但那不是全部。在返回结果之前,您需要检查数组中的所有值:

function getMaximumSFactor($commuatorID, $gradeID) {
  $sFactorGrades = populateSFactorGrades();
  foreach($sFactorGrades as $key=>$value){
    if (intval($value[1]) == $commuatorID && intval($value[2]) == $gradeID) {
        return $value[0];
    }
  }
  return 0;
}