Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Сравнение
Форумы портала PHP.SU » » Вопросы новичков » Сравнение

Страниц (1): [1]
 

1. wkera - 19 Декабря, 2012 - 14:55:13 - перейти к сообщению
Доброго времени суток. У меня не получается построить конструкцию else-if
Код следующий:
PHP:
скопировать код в буфер обмена
  1.  
  2. $test = 077;
  3. if ($test == (700 || 707 || 770 || 777)){
  4. ...
  5. }
  6.  


В результате всегда true...
То есть таким образом я хочу сделать систему прав в скрипте. Где я не прав? Спасибо.
2. sKaa - 19 Декабря, 2012 - 15:04:56 - перейти к сообщению
3. Zuldek - 19 Декабря, 2012 - 15:09:09 - перейти к сообщению
Не правы вы в том, что начали программировать на PHP не разобравшись с базовыми основами языка.
Не строгая типизация приводит в том числе к таким ошибкам.
Потому нужно знать какой тип вы получите на выходе или хотя бы не лениться его проверять (о корявости самого кода не говорю).
CODE (htmlphp):
скопировать код в буфер обмена
  1. $test = (700 || 707 || 770 || 777);
  2. echo gettype($test);
  3. $testb = 077;
  4. echo " ".gettype($testb);
  5. if($test==$testb) echo "$test==$testb";
4. wkera - 19 Декабря, 2012 - 16:29:50 - перейти к сообщению
Zuldek пишет:
(о корявости самого кода не говорю).


Какую алтернативу сравнения вы можете предложить тогда? Буду благодарен
5. ams - 19 Декабря, 2012 - 16:48:37 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2.         $b = 077;
  3.  
  4.         var_dump(
  5.                 in_array($b, array(707, 700, 777, 770))
  6.         );
  7.  

 

Powered by ExBB FM 1.0 RC1