2013-09-02 9 views
0

У меня есть следующий код:если/еще не работает, как ожидалось

$posthandlerResult = reserveerForm_posthandler(decideWhichSectionlist()); 

if($posthandlerResult=='go2paypage'){ 
    echo 1; 
}elseif($posthandlerResult===true){ 
    echo 2; 
}else{ 
    echo 3; 
} 

Это значение $ posthandlerResult (я сделал это, прежде чем я сделал, если/другое):

var_dump($posthandlerResult); // -> bool(true) 

Что я ожидаю? Эхо с номером 2. Однако, я получаю номер 1. Я слишком долго смотрел на это, почему не работает эта работа?

ответ

2

Вы также можете использовать === -оператор, чтобы проверить правильный тип.

== проверяет, если два выражения оценивают одинаковое значение. Интерпретируется как bool. Ваша строка оценивается как true.

Первый из ваших операндов - bool -значение, поэтому второй операнд интерпретируется как bool. Непустая, а не нулевая строка оценивается как boolean true.

Вы можете посмотреть оператор-поведение для string и bool сравнений здесь: http://www.php.net/manual/en/language.operators.comparison.php

+0

тройная равно не имеет значения, я не забочусь о типе в этой точке. bool (true) все еще aint 'go2paypage' – Martijn

+1

Нет, но 'bool ('go2paypage') == bool (true)'. – urzeit

+0

Если бы вы могли уточнить, каким образом мое объяснение неверно, я постараюсь сделать это лучше. – urzeit

Смежные вопросы