QQQ Следи за логикой: PHP: <?php $b = isset($a) ? $a : 0; Проверили есть ли такая переменная - есть, присвоили её в $b, в противном случае задали $b значение по умолчанию. PHP: <?php $b = array_key_exists('a', $_GET) ? $_GET['a'] : 0; Проверяем, есть ли такой ключ в массиве, если есть - присвеваем $b значение ключа a масива $_GET, либо значение по умолчанию. Ключевые слова - "массив" и "переменная"
да я понял о чём ты.. ) просто лично я считаю, что в данной конкретной ситуации этим можно принебречь и читабельность кода не ухудшится.. все знают что такое $GET, что $_GET всегда существует и что тут идёт проверка существования ключа этого массива.. а isset действительно быстрее и короче ну я бы не обобщал.. ))
Короче учитесь детки как не надо писать PHP: <?php /* Product: Mega paranoid-fetish mode by Vladson */ function get_to_sql($name, $array) { if (array_key_exists($name, $array)) { if (is_numeric($array[$name])) { $get_value = $array[$name]; } else { if (get_magic_quotes_gpc()) { $get_value = stripslashes($array[$name]); } else { $get_value = $array[$name]; } $get_value = mysql_real_escape_string($get_value); } } else { $get_value = false; } return isset($get_value) ? $get_value : false; } ?>
Отличие array_key_exists от isset в том, что isset проверяет не только на существование, но и на null.
PHP: <?php $array = array('k' => null); var_dump(isset($array['k'])); // bool(false) var_dump(array_key_exists('k', $array)); // bool(true)
откуда в $_GET'e null? если только я сам его конечно туда предварительно поместил, а дальше проверяю существование ключа... но тогда дело явно не в лыжах и ко мне нужно направить доктора
уф. а где я говорил, что там может быть null? я к тому, что array_key_exists целесообразно применять там, где нам не важно какое значение лежит по данному ключу, а важно само его наличие.
Помнь один чувак однажды просил, как проверить переменную на то, что в ней нет ничего, кроме цифр, и, если там ничего кроме цифр нет - для безопасности присвоить ей тип int :lol:
Да не в том дело. Достаточно ничего не проверяя привести строку к int и ничего кроме цифр туда не попадет, даже если сперва и было.
Sergey89 Он жаловался что на неправильную работу is_int. Код был таким: PHP: <?php if (is_int($_GET['var'])) { $var=(int)$_GET['var']; } else { $var=$_GET['var']; }
Млин, в "Mega paranoid-fetish mode by Vladson" коде баг нашёл, поправил, кто юзает в реальном проекте обновите до второй, млин, уже третей версии
Ну если у тебя в коде примерно такие функции то можешь не смеяться, я в свою очередь избегаю подобные решения.
Опять баги посыпались... Накой в php ипользовать С- int() если там есть intval PHP: <?php if (is_int($_GET['var'])) { $var=intval($_GET['var']); } else { $var=$_GET['var']; }
Гы, вот меня попёрло то PHP: <?php /* Product: Mega paranoid-fetish mode by Vladson Version: 0.0.1-alfa5 */ function get_to_sql($name, $array) { return array_key_exists($name, $array) ? is_numeric($array[$name]) ? $array[$name] : '' == trim($array[$name]) ? NULL : mysql_real_escape_string( get_magic_quotes_gpc() ? stripslashes($array[$name]) : $array[$name] ) : NULL; } ?>
ет нам спец тему сделать, для мусорных, но прикольных функций )) [vs], значит я торможу )))))))))))))))))))))