Некоторые комментарии о вашем коде:
- Вам не нужно
break
после return
. break
не работает для if
в PHP. - Вам не нужно делать
else
, если вы уже используете return
.
Я внес некоторые изменения в ваш код, чтобы сделать это более заметным итакже уменьшает цикломатическую сложность.Возможно, это поможет вам легче найти ошибку:
function unnamed(/* ... unknown parameters ... */)
{
/* ... some code ... */
if ($num==0)
{
return "Do not appear to be registered. Please check your email input again.";
}
// there is an entry. check for consistency
$procrastinateDB = mysql_result($result,0,'procrastinate');
if ($procrastinate != $procrastinateDB)
{
return "Answer to your procrastination question is incorrect. Please try again!";
}
$username = mysql_result($result,0,'usrname');
$passwd = mysql_result($result,0,'passwd');
return array($username, $passwd, $num);
}
Ваша функция возвращает строку или массив между прочим.Если вы не проверяете тип возвращаемого значения и предполагаете, что это массив, вы активируете доступ к подстроке (см. , документально подтвержденный на странице справочника по строке ):
$string = 'ABC';
echo $string[0]; // A
echo $string[2]; // C
Часто лучшеесть функция, возвращающая один тип, а не несколько.Однако это зависит от вашего дизайна и стиля кодирования, поэтому я могу только предлагать, например, возвращать объект, который содержит сообщение о состоянии, код состояния (успех / сбой) и - если доступно - массив данных, которые вы хотите вернуть.Однако это зависит от того, что вы хотите / нужно.Вы также можете проверить тип возврата с помощью is_array
.