Php 代码未返回预期结果

Php 代码未返回预期结果,php,arrays,Php,Arrays,有一个$sFactorGrades,我需要根据GradeID和conversitorID从中检索第0个元素,后者分别是数组中的第一个和第二个元素 GradeID和conversitorID作为参数传递给函数 我编写的代码没有返回我知道存在的值 欢迎提出任何建议 这是我的密码: function getMaximumSFactor($commuatorID, $gradeID) { $sFactorGrades = populateSFactorGrades(); $arraySi

有一个
$sFactorGrades
,我需要根据
GradeID
conversitorID
从中检索第0个元素,后者分别是数组中的第一个和第二个元素

GradeID
conversitorID
作为参数传递给函数

我编写的代码没有返回我知道存在的值

欢迎提出任何建议

这是我的密码:

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];
        } else {
            return 0;
        }
    }
}
以下是我的结果:
0

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

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

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

在这种情况下,它应该给出一个
未定义索引
错误或类似错误。

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

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

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

在这种情况下,它应该给出一个
未定义索引
错误或类似错误。

代码的问题是返回得太早。当代码遇到
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;
}
函数getMaximumSFactor($commuatorID,$gradeID){ $sFactorGrades=populateSFactorGrades(); $arraySize=计数($sFactorGrades); 对于($i=0;$i<$arraySize;$i++){ 如果(intval($sFactorGrades[$i][1])==$commuatorID&& intval($sFactorGrades[$i][2])==$gradeID){ 返回$sFactorGrades[$i][0]; } } 返回0; } 如果您的代码到达最后一个
返回值
,则表示从未满足
If
条件。对于
getMaximumSFactor(1,2)
,它应该返回
0.2


代码的问题在于返回得太早。当代码遇到
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;
}
函数getMaximumSFactor($commuatorID,$gradeID){ $sFactorGrades=populateSFactorGrades(); $arraySize=计数($sFactorGrades); 对于($i=0;$i<$arraySize;$i++){ 如果(intval($sFactorGrades[$i][1])==$commuatorID&& intval($sFactorGrades[$i][2])==$gradeID){ 返回$sFactorGrades[$i][0]; } } 返回0; } 如果您的代码到达最后一个
返回值
,则表示从未满足
If
条件。对于
getMaximumSFactor(1,2)
,它应该返回
0.2


$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;
}

$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;
}

这不是这里真正的问题。这是我看到为什么这样一个IF语句永远不会返回true的第一个也是最明显的原因。但这不是这里真正的问题。这是我看到为什么这样一个IF语句永远不会返回true的第一个也是最明显的原因。完全有道理。感谢您的回答和演示。非常有意义。谢谢你的回答和演示。对不起,希望我能接受多个答案+对不起,我希望我能接受不止一个答案+1.