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.