=== vs ==

serglt

Анус, ой, Ахтунг
Вставлю свой пятачек
=== может быть печалькой

1. Все данные с запроса ($_) - текстовые
2. С БД те же яйца, если ты думаешь что поля БД приходят в своем типе - тож ошибка. Все оно строки.
Так что парною отключаем, пользуемся встроенным механизмом, это актуально тока когда функция возвращает 0 или false.
или похажая ситуация
 

MiksIr

miksir@home:~$
я так не думаю - http://phpclub.ru/talk/threads/vs.74518/#post-666164
именно поэтому нужно приведение, если точно знаешь что должно прийти число
Зачем? Что изменится то, не понимаю, если пришедшее из базы ты сравнишь с 2-кой (int) === и просто == ?
Я понимаю, когда нужно строгое при работе с нулями и пустыми строками, но тут то какие камни?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
предполагаю, что это вера в то, что стиль "серьезных" типизированных языков повышает уровень решений и самих авторов

для случая "точно знаешь что должно прийти число" лучше делать валидацию, а не приведение типов

вместо
PHP:
$var = (int)$var;
if ($var === 2) {
   $var++; // здесь уже правильный тип
}
можно не менять тип переменной только для проверки
PHP:
if (intval($var) == 2) {
   $var++; // и пофиг какой тип
}
но как по мне, это вообще вопрос личного стиля, а не проблема
 

MiksIr

miksir@home:~$
С точки зрения PHP
PHP:
if (intval($var) == 2) {
   $var++; // и пофиг какой тип
}
ничем не отличается от
PHP:
if ($var == 2) {
   $var++;
}
 

weregod

unserializer
Нада ж понимать, что == операция сложнее (делает больше), чем ===.
не знаю, не знаю, при === двух моих колбэков (array($obj1, 'method') === array($obj2, 'method')) последний php 5.3 почему-то даёт
Fatal error: Nesting level too deep - recursive dependency? in..
, а при == не даёт
 

damner2

Новичок
не знаю, не знаю, при === двух моих колбэков (array($obj1, 'method') === array($obj2, 'method')) последний php 5.3 почему-то даёт
, а при == не даёт
эээ, подозрительно... у меня в 5.3.19 наоборот и этому я не удивляюсь:
PHP:
<?php

$o1 = new stdClass();
$o2 = new stdClass();

$o1->link = $o2;
$o2->link = $o1;

var_dump($o1 === $o2);
var_dump($o1 == $o2);
bool(false)
<br />
<b>Fatal error</b>: Nesting level too deep - recursive dependency? in <b>/home/damner2/1.php</b> on line <b>10</b><br />
 
Сверху