PHP: Занимательное преобразование типов
Сегодня ночью со мной приключилась белка..
Как вы думаете, какой результат будет после выполнения этого куска кода?
$a = "Day=17,Month";
$b = (int) $a;
$c = $a == (int) $a;
$d = $a == $b;
var_dump($a, $b, $c, $d);
Скорее всего совсем не тот, который вы ожидали увидеть:
string(12) "Day=17,Month"
int(0)
bool(true)
bool(true)
Второй пример — наш случай:
$a = "Day=17,Month";
$b = (int) $a;
$c = $a == (string)((int) $a);
$d = $a == $b;
var_dump($a, $b, $c, $d);
Результат поражает:)
string(6) "Day=17,Month"
int(0)
bool(false)
bool(true)
test
Вот такие простые истины полвторого ночи…
Полезные ссылки (php.net):
- таблица преобразования и сравнения типов / PHP type comparison tables;
- преобразование типов / type juggling.