根据$sFactorGrades
和GradeID
,我需要CommutatorID
来检索第0个元素,GradeID
分别是数组中的第1个和第2个元素。
CommutatorID
和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;
}
}
}
作为参数传递给函数。
我写的代码没有返回我知道的值。
欢迎任何建议。
这是我的代码:
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}}
答案 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
。
答案 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;
}