Никита К.
1594 повідомлення
#15 років тому
Плз, объясните, когда надо использовать те или иные комбинации

  • =
  • ==
  • ===
  • !=
  • !==

В условных конструкциях. Буду очень благодарен, а то сейчас приходится делать только проверяя на опыте.. А хочется знать точно.
Евгений О.
2989 повідомлень
#15 років тому
Цитата ("Anexroid"):

= присвоение значения
== сравнение по значению
=== точное сравнение по значению и типу
!= сравнение по неравно по значению
!== точное сравнение по неравно по значению и типу
Никита К.
1594 повідомлення
#15 років тому
Цитата ("elosoft"):
присвоение значения

В условных конструкциях?
Евгений О.
2989 повідомлень
#15 років тому
Цитата ("Anexroid"):
В условных конструкциях?

Нет. Просто = в условных конструкциях не используется.
Если Вы имеете ввиду выражение типа
if ($a = my_function()) {...}
то это не условие.
Сначала переменной $a будет присвоено значение, возвращенное функцией my_function()), а потом значение $a будет проверено на 0, null, пустое значение и логическое false.
Никита К.
1594 повідомлення
#15 років тому
А что тогда вернет
$a = 123;
if($a = 123)
{
...
}
Евгений О.
2989 повідомлень
#15 років тому
Вы дважды присваеваете $a значение 123 и проверяете на не пустое значение.
Никита К.
1594 повідомлення
#15 років тому
Ясно, всё, понял)) Спасибо!
Виталий Т.
168 повідомлень
#15 років тому
Цитата ("Anexroid"):
Ясно, всё, понял)) Спасибо!


Лучше используйте < и > например, т.к. методы выше, работают медленнее. Хотя, если вы новичок, и пишите пока, чтобы просто работало. То можно и так.
Никита К.
1594 повідомлення
#15 років тому
Цитата ("snoop15"):
Лучше используйте < и >

Что то не понял. То есть вместо
$a = 123;
if($a == 123)
{
...
}

лучше писать
$a = 123;
if((not($a < 123)) and (not($a>123)))
{
...
}
Сергей Ф.
420 повідомлень
#15 років тому
В пхп not нет
вроде тогда уже так:
if(($a<123)and($a>123))
но я пишу == обычно
Сергей Д.
326 повідомлень
#15 років тому
Цитата ("snoop15"):
Лучше используйте < и > например, т.к. методы выше, работают медленнее.

Бред.
Виталий Т.
168 повідомлень
#15 років тому
Цитата ("oren"):
Цитата ("snoop15"):
Лучше используйте < и > например, т.к. методы выше, работают медленнее.

Бред.


Не бред. Если оптимизировать код то лучше < и >.
Владимир С.
21 повідомлення
#15 років тому
Цитата ("snoop15"):
Цитата ("Anexroid"):
Ясно, всё, понял)) Спасибо!


Лучше используйте < и > например, т.к. методы выше, работают медленнее. Хотя, если вы новичок, и пишите пока, чтобы просто работало. То можно и так.
полнейший бред.
Виталий Т.
168 повідомлень
#15 років тому
Цитата ("Am1GO"):
Цитата ("snoop15"):
Цитата ("Anexroid"):
Ясно, всё, понял)) Спасибо!


Лучше используйте < и > например, т.к. методы выше, работают медленнее. Хотя, если вы новичок, и пишите пока, чтобы просто работало. То можно и так.
полнейший бред.


Если бред, на 100% уверены?
Почитайте посты разные на форумах и т.д.
Гугл в помощь.
Сергей Д.
326 повідомлень
#15 років тому
Цитата ("snoop15"):
Если бред, на 100% уверены?
Почитайте посты разные на форумах и т.д.
Гугл в помощь.

Давайте-ка конкретнее.
Вы утверждаете, что кострукция
$a==$b

будет работать медленне, чем
!($a<$b) && !($a>$b)
? Правильно я Вас понял?
Так вот, факт: на моей локальной машине вторая конструкция работает медленнее. И хоть весь интерент будет завален противоположными публикациями, я ЗНАЮ (не верю, не думаю, не предполагаю, а именно знаю), что первая конструкция работает быстрее на моей локальной машине. И на сервере, где мой сайт.

Если Вы имели ввиду что-то другое, так напишите конкретнее. Ваше сообщение путает новичков.
А в сочетании с неграмотным написанием Ваших постов, я предполагаю что возможен и такой вариант: Вы что-то где-то прочитали и не так поняли.
Виталий Т.
168 повідомлень
#15 років тому
Цитата ("oren"):
Цитата ("snoop15"):
Если бред, на 100% уверены?
Почитайте посты разные на форумах и т.д.
Гугл в помощь.

Давайте-ка конкретнее.
Вы утверждаете, что кострукция
$a==$b

будет работать медленне, чем
!($a<$b) && !($a>$b)
? Правильно я Вас понял?
Так вот, факт: на моей локальной машине вторая конструкция работает медленнее. И хоть весь интерент будет завален противоположными публикациями, я ЗНАЮ (не верю, не думаю, не предполагаю, а именно знаю), что первая конструкция работает быстрее на моей локальной машине. И на сервере, где мой сайт.

Если Вы имели ввиду что-то другое, так напишите конкретнее. Ваше сообщение путает новичков.
А в сочетании с неграмотным написанием Ваших постов, я предполагаю что возможен и такой вариант: Вы что-то где-то прочитали и не так поняли.


Нет, я имею ввиду, что не в этом примере, а вообще.

То есть
 if ($a < 1) {
...
}

чем
if ($a != 1 ) {
...
}
Сергей Д.
326 повідомлень
#15 років тому
($a<1) и ($a!=1) - не эквивалентные условия.
Николай Т.
205 повідомлень
#15 років тому
Цитата ("Anexroid"):
$a = 123;
if($a == 123)
{
...
}

для проверки что переменная $a равна числу, строке 123
для проверки что $a равно только числу можно изменить этот код 2мя способами
1)$a = 123;if($a === 123) - сравнение по значению и типу
2)$a = 123;if((int)$a == 123) - приводим переменную $a к численному значению (этот способ является более плохим, и в неумелых руках может служить источником бага)

- Описание языковых конструкций
- Таблицы отображающие как происходит работа с типами при сравнении


Цитата ("snoop15"):
Цитата ("Anexroid"):
Ясно, всё, понял)) Спасибо!


Лучше используйте < и > например, т.к. методы выше, работают медленнее. Хотя, если вы новичок, и пишите пока, чтобы просто работало. То можно и так.

уважаемый не учите человека писать говнокод
Цитата ("snoop15"):
Если бред, на 100% уверены?
Почитайте посты разные на форумах и т.д.
Гугл в помощь.

давайте ссылаться на мануал или исходный код php, где бенчмарки (хотя имхо чтобы померить такое придется хорошо подумать как составить тест)?
Никита К.
1594 повідомлення
#15 років тому
Ладно, с условиям понял, спасибо.

Ещё такой вопрос. Как будет правильнее, или, если точнее, более предпочтительнее?
$a = intval($_GET);
или
$a = (int) $_GET;
?
Дмитрий Васильковский
756 повідомлень
#15 років тому
Помоему вобще функция не нужная!
$a = $_GET; и хватит! Если $_GET будут числа лежащие в диапазоне integer то $a будет такого же типа!