За последние 24 часа нас посетили 101708 программистов и 5665 роботов. Сейчас ищут 2485 программистов ...

Какой смысл несёт знак @ в php выражениях?

Тема в разделе "PHP для новичков", создана пользователем sergeybask, 30 окт 2008.

  1. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    это уже фетешизм :)
     
  2. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.674
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    QQQ
    Следи за логикой:

    PHP:
    1. <?php
    2. $b = isset($a) ? $a : 0;
    3.  
    Проверили есть ли такая переменная - есть, присвоили её в $b, в противном случае задали $b значение по умолчанию.

    PHP:
    1. <?php
    2. $b = array_key_exists('a', $_GET) ? $_GET['a'] : 0;
    3.  
    Проверяем, есть ли такой ключ в массиве, если есть - присвеваем $b значение ключа a масива $_GET, либо значение по умолчанию.

    Ключевые слова - "массив" и "переменная" :)
     
  3. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.036
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    В программировании это слово имеет положительный оттенок.
     
  4. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    да я понял о чём ты.. )

    просто лично я считаю, что в данной конкретной ситуации этим можно принебречь и читабельность кода не ухудшится.. все знают что такое $GET, что $_GET всегда существует и что тут идёт проверка существования ключа этого массива.. а isset действительно быстрее и короче :)

    ну я бы не обобщал.. ))
     
  5. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.036
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Короче учитесь детки как не надо писать :)
    PHP:
    1. <?php
    2. /*
    3.     Product: Mega paranoid-fetish mode by Vladson
    4. */
    5. function get_to_sql($name, $array) {
    6.     if (array_key_exists($name, $array)) {
    7.         if (is_numeric($array[$name])) {
    8.             $get_value = $array[$name];
    9.         } else {
    10.             if (get_magic_quotes_gpc()) {
    11.                 $get_value = stripslashes($array[$name]);
    12.             } else {
    13.                 $get_value = $array[$name];
    14.             }
    15.             $get_value = mysql_real_escape_string($get_value);
    16.         }
    17.     } else {
    18.         $get_value = false;
    19.     }
    20.     return isset($get_value) ? $get_value : false;
    21. }
    22. ?>
     
  6. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.783
    Симпатии:
    0
    Отличие array_key_exists от isset в том, что isset проверяет не только на существование, но и на null.
     
  7. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.139
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    То-есть?
     
  8. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.783
    Симпатии:
    0
  9. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    откуда в $_GET'e null? :)

    если только я сам его конечно туда предварительно поместил, а дальше проверяю существование ключа... но тогда дело явно не в лыжах и ко мне нужно направить доктора :)
     
  10. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.783
    Симпатии:
    0
    уф. а где я говорил, что там может быть null? я к тому, что array_key_exists целесообразно применять там, где нам не важно какое значение лежит по данному ключу, а важно само его наличие.
     
  11. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.543
    Симпатии:
    623
    Помнь один чувак однажды просил, как проверить переменную на то, что в ней нет ничего, кроме цифр, и, если там ничего кроме цифр нет - для безопасности присвоить ей тип int :lol:
     
  12. Mete0

    Mete0 Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    Это сильно :)
     
  13. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.783
    Симпатии:
    0
    В $_GET всегда строки, т.ч. ничего плохого в приведении типа к числу не вижу.
     
  14. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.341
    Симпатии:
    0
    Да не в том дело. Достаточно ничего не проверяя привести строку к int и ничего кроме цифр туда не попадет, даже если сперва и было.
     
  15. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.543
    Симпатии:
    623
    Sergey89
    Он жаловался что на неправильную работу is_int. Код был таким:
    PHP:
    1. <?php
    2. if (is_int($_GET['var'])) {
    3.         $var=(int)$_GET['var'];
    4. }
    5. else {
    6.         $var=$_GET['var'];
    7. }
     
  16. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.036
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Млин, в "Mega paranoid-fetish mode by Vladson" коде баг нашёл, поправил, кто юзает в реальном проекте обновите до второй, млин, уже третей версии :)
     
  17. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Vladson, и где тут надо смеяться?
     
  18. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.036
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Ну если у тебя в коде примерно такие функции то можешь не смеяться, я в свою очередь избегаю подобные решения.
     
  19. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Опять баги посыпались... Накой в php ипользовать С- int() если там есть intval


    PHP:
    1. <?php
    2.  if (is_int($_GET['var'])) {
    3.          $var=intval($_GET['var']);
    4.  }
    5.  else {
    6.          $var=$_GET['var'];
    7.  }
     
  20. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.543
    Симпатии:
    623
    Nemo
    Ну я тот код специально привел чтобы посмеяться ))
     
  21. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.036
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Гы, вот меня попёрло то :)
    PHP:
    1. <?php
    2. /*
    3.     Product: Mega paranoid-fetish mode by Vladson
    4.     Version: 0.0.1-alfa5
    5. */
    6. function get_to_sql($name, $array) {
    7.     return array_key_exists($name, $array)
    8.         ? is_numeric($array[$name])
    9.             ? $array[$name]
    10.             : '' == trim($array[$name])
    11.                 ? NULL
    12.                 : mysql_real_escape_string(
    13.                     get_magic_quotes_gpc()
    14.                     ? stripslashes($array[$name])
    15.                     : $array[$name]
    16.                 )
    17.         : NULL;
    18. }
    19. ?>
     
  22. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Топик страдания хренью.
     
  23. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    ет нам спец тему сделать, для мусорных, но прикольных функций ;)))
    [vs], значит я торможу :))))))))))))))))))))))
     
  24. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.036
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Надо бы, у меня по крайней мере не редко на такой разврат прёт.