Загадка про PHP. Номер A.

Пример Kukutz'a. Дано:

$a = 0;
var_dump ('all' != $a);

Что будет на экране.

17 августа 2003 10:18

Улитка (инкогнито)
17 августа 2003, 13:28

Выведет <strike>true</strike> false из-за приведения 0 в строку.

bolk (bolknote.ru)
17 августа 2003, 13:28, ответ предназначен Улитка

Если ноль приведётся к '0', то операция будет выглядеть как 'all' != '0', а они не равны, не так ли?

KalbasKa (инкогнито)
17 августа 2003, 13:36

Наоборот, 'all' к 0 приведется. По идее.

bolk (bolknote.ru)
17 августа 2003, 13:36, ответ предназначен KalbasKa

'all' приведётся к int. так и есть.

Улитка (инкогнито)
17 августа 2003, 16:25

А ответ будет — false!

Пока я пропадал столько загадок появилось. Жаль что некоторые уже отгаданы

bolk (bolknote.ru)
17 августа 2003, 16:25, ответ предназначен Улитка

А ты не заглядывай в ответы :)

Улитка (инкогнито)
17 августа 2003, 16:53

Не могу добавлять комментарий, не заглядывая в остальные — кнопки добавить нет на главной страницы, а у меня не настолько крепкая сила воли, чтобы глаза на полдюйма вниз не опускать, когда я к кнопке добавления комментария тянусь :-)

bolk (bolknote.ru)
17 августа 2003, 16:53, ответ предназначен Улитка

Ну, а ты сначала придумай ответ, а потом честно его напиши :)

detail (инкогнито)
17 августа 2003, 19:07

Если подразумевается, что от такой фичи можно пострадать, неправильно проверить значение, дать кому-то права админа сайта, то это беда лихого программера, который не приводит типы данных и сравнивает неизвестно что с неизвестно чем. :) Имхо.

bolk (bolknote.ru)
17 августа 2003, 19:07, ответ предназначен detail

От такой фичи страдает полно народу. Я, например, пострадал однажды. Типы данных привожу крайне редко. Ты делаешь это всегда?

detail (инкогнито)
17 августа 2003, 19:10

Если из веб-формы приходит поле, которое должно быть числом, делаю intval. А сравниваю со значением из базы, которое имеет тип *INT.

bolk (bolknote.ru)
17 августа 2003, 19:10, ответ предназначен detail

Форма частный случай. У меня, например, значение вернула функция.

detail (инкогнито)
17 августа 2003, 19:14

Тогда, сам знаешь, сравнивать надо оператором !==.

bolk (bolknote.ru)
17 августа 2003, 19:14, ответ предназначен detail

Тоже не всегда. Случаев таких — миллион, иногда хочется именно !=

kukutz (инкогнито)
18 августа 2003, 05:40

2detail.

Если я сравню оператором !==, то «5»!==5 будет true, чего мне бы не хотелось.

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)