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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Что означает @ перед переменно?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
NeuroZ
Отправлено: 18 Июня, 2015 - 12:58:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Всем привет!
Вот наткнулся на такой кусок кода... Совершенно непонятно что и зачем...
PHP:
скопировать код в буфер обмена
  1. foreach ($tmp_params as $v) {
  2.                     preg_match("/^([^=]*)=(.*)|/i", $v, $res);
  3.                     $custom_params[@$res[1]] = json_decode(@$res[2]);
  4.                 }

В частности не ясно что означает @ перед переменной...

Гуглил - нашел только @ перед функцией - запрещает вывод ошибок. А вот такую конструкцию вижу впервые...
 
 Top
Ts.Saltan
Отправлено: 18 Июня, 2015 - 13:08:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




NeuroZ пишет:
что означает @ перед переменной

вместо проверки isset, чтоб при отсутствии элементов массива не всплывал notice

уж лучше проверять на то, что вернёт preg_match ибо если он ничего не найдёт - вернёт false
(Добавление)
кстати, в новой php7 появится сишный синтаксис
PHP:
скопировать код в буфер обмена
  1. $a = $arr['bla'] ?? NULL;
  2. //что эквивалентно этому
  3. $a = isset($arr['bla'])?$arr['bla']:NULL;
  4.  
 
 Top
DeepVarvar Супермодератор
Отправлено: 18 Июня, 2015 - 13:50:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ts.Saltan пишет:
кстати, в новой php7
Ждем пхп8 с:
PHP:
скопировать код в буфер обмена
  1. $a = $b || $c || $d || $e || $f || $g;

Что эквивалентно:
PHP:
скопировать код в буфер обмена
  1. if (isset($b)) {
  2.     $a = $b;
  3. } else if (isset($c)) {
  4.     $a = $c;
  5. } else if (isset($d)) {
  6.     $a = $d;
  7. } else if (isset($e)) {
  8.     $a = $e;
  9. } else if (isset($f)) {
  10.     $a = $f;
  11. } else if (isset($g)) {
  12.     $a = $g;
  13. } else {
  14.     $a = null;
  15. }
 
 Top
NeuroZ
Отправлено: 18 Июня, 2015 - 14:39:49
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Спасибо
 
 Top
armancho7777777 Супермодератор
Отправлено: 18 Июня, 2015 - 14:55:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




DeepVarvar пишет:
Ждем пхп8 с:

Да, как в JS.
Мне, пипец как, не хватает этого.
 
 Top
armancho7777777 Супермодератор
Отправлено: 18 Июня, 2015 - 18:32:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




А выше, это кусок говнокода.
Требовалась-то мелочь:
PHP:
скопировать код в буфер обмена
  1. if(preg_match("/^([^=]+)=(.+)|/i", $v, $res)) {
  2.     $custom_params[$res[1]] = json_decode($res[2]);
  3. }

(Добавление)
Да и всё-равно говно-реализация, которая заставляет производить такие манипуляции.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB