посмотрим, может ли кто-нибудь помочь мне.
У меня есть функция, называемая ret_error(), которая вызывается, когда появляется ошибка доступа к таблице в базе данных, а это значит, что "не удалось подключиться", "запись не найдена" и тому подобное. Эти функции возвращают массив с двумя ключами, подобными этому
array('error' => true, 'code' => Model::RECORD_NOT_FOUND);
Если я вызываю функцию, которая возвращает массив, построенный с помощью ret_error(), и я проверяю массив, это похоже на
$result = array('error' => 1, 'code' => Model::RECORD_NOT_FOUND);
Но когда я оцениваю с помощью 'if'
if (!$result['error']) {
do something;
}
else {
do something else;
}
Всегда оценивается как false, даже если я передал логическое значение.
Это работает правильно, если оценивается как int, например
if ($result['error'] != 1) {
Есть что-то, что мне не хватает?
При преобразовании в boolean следующие значения считаются FALSE:
Короче говоря, 0 - False, а все остальные значения True. Я бы предложил быстрый взломать
if($result['error'] === true || $result['error'] === 1) {
//logic
}
if($result['error'] === true)
? таким образом три===
заставят быть полностью равными. Как вы знаете,0
интерпретируется какfalse
а1
какtrue
в программировании.