как я понял отсюда http://www.blueshoes.org/en/developer/php_cheat_sheet/ - это просто обратные функции? т.е. isset = !is_null или есть еще отличия? и можна ли место if (isset($_POST['ID']) делать так if (!is_null($_POST['ID'])?
Проверяется легко: PHP: <?php error_reporting(2048); echo '<br/>$var is not exist; isset $var = ',(isset($var)?'true':'false'),'; is_null($var) = ',(is_null($var)?'true':'false'); $var = NULL; echo '<br/>$var is NULL; isset $var = ',(isset($var)?'true':'false'),'; is_null($var) = ',(is_null($var)?'true':'false'); $var = '1'; echo '<br/>$var has value of 1; isset $var = ',(isset($var)?'true':'false'),'; is_null($var) = ',(is_null($var)?'true':'false'); ?> ЗЫ. Да, этот код несколько извращен. Ну во так.
is_null проверяет, что переменная ничего не содержит(null), isset проверяет, что переменная существует и что-то содержит.
ЗЗЫ. У isset() есть одна нифиговая фича, про которую почему то мало кто знает. С ним можно сделать так: PHP: <?php if(isset($var, $var2, $var3)) { ... } ?>
Sergey89 а техническим языком(ну или языком PHP) можна как-то показать, то что вы сказали? Я просто вас понял, но не могу понять как это для PHP
вот я использую isset($_POST['ID']), а как мне проверит если я передаю $_POST['ID'] в функцию? Как проверить в функции что-то что оно isset()? передвать ссылку на $_POST
PHP: <?php function test ($var) { if ( isset ($var) ) return ('The variable is set'); else return ('The variable is not set'); } echo test ($_POST['ID']); ?>
Professor Понял спасибо! Плин вроде элементарные вещи, но иногда меня на фоне ==, === и null - глючит скажите а если так: PHP: <?php function test ($var) { if ( isset ($var) ) return ('The variable is set'); else return ('The variable is not set'); } $var = $_POST['ID']; echo test ($var); ?> при этом $_POST['ID'] не определен, т.е isset ($_POST['ID']) - вернет false, то как я понимаю после $var = $_POST['ID']; станет $var = NULL, и тогда isset ($var) = false? или я не прав?
Вот хоть убейте меня, но я не понимаю таких вопросов. А что, заподло самому запустить этот код и посмотреть, что он тебе скажет? Или обязательно нужно, чтобы кто-то подал соску и подержал бутылочку? Пардон. У меня тут младшему 4,5 месяца, ассоциации - соответственные.
RomanBushЯ спросил из за того что не совсем понял вот это: http://php.ru/forum/viewtopic.php?p=80754#80754
И не поймешь. Чтобы понять, нужно этот вопрос не в php осваивать, а на каком-нибудь C++/Delphi. Там это намного очевиднее и понятнее сделано (когда разберёшься ). А на php все эти вещи сделаны прозрачными для пользователя и трудно поддающимеся вычислению "как оно работает". Если ты начал изучение програмирования с php - моя личная рекомендация - не пытайся это понять - либо запутаешься, либо придёшь к кривым выводам, которые будут мучать тебя потом всю жизнь. Лучше прочти, что такое в Сях null-terminated string, ANSI string и что такое массив Char и чем все эти вещи отличаются. Вот в php эти все три вещи выглядят и работают абсолютно одинаково. А в Сях в них есть принципиальная разница.
Я хорошо программирую в сях и Delphi, более того на асме, ну может не хорошо, я скромный, но думаю я далеко не новичок в этих вопросах . И от того что я знаю что такое null-terminated string, ANSI string и что такое массив Char - у меня часто и возникают вопросы в PHP. Где много неоднозначностей для меня. Хотя мой мозг пытается все четко расставить по полочкам Для меня было бы ясней если бы я знал как в мнемонике асма работают isset и is_null , если они отличаются не только своей обратностью, или было бы ясней если оставили что-то одно!
В асме не расскажу. А в сях, дельфях - всё очень просто. Объявленная переменная всегда даст - isset()===true, но не всегда даст is_null()===true; потому что уже может иметь значение, отличное от null. А вообще - открываешь доку и читаешь: isset -- Determine whether a variable is set - Returns TRUE if var exists; FALSE otherwise. is_null -- Finds whether a variable is NULL - Returns TRUE if var is null, FALSE otherwise. Что тут непонятного-то?
А в этом примере: Переменная $_POST['step'] у нас НЕ void, а она вообще не объявлена. И вот эта попытка присвоения $step = $_POST['step']; - будет объявлять переменную $step значением void, на php'шном понятии - null. а вот isset(void) будет как раз false. Кажется так. Что-то я сам запутался. Ау, старшие товарищи! Правильно я написал или нет?
да все понятно, ну да ладно ну дальше уже флуд наверно ) в какой ситуации смогу воспользоваться только одной из этих функций, но вторая при этом помоч не сможет? По своей сути isset() = !is_null(). Вот я и был в замешательстве, зачем две функции если null и был придуман для того чтобы показать "нет значения" а тут получается добавили еще одно состояние(существует ли переменная), но на практике это лишь еще одно название для null. Вот поэтому думаю такое "скрытие" от программиста внутренностей лишь создает проблемы в понимании. Вот выше Sergey89 сказал и я как новичок подумал, что ведь так и есть но потом подумал а какая разница? какая разница между "существует и имеет значение NULL" и "не существует" на практике? кто-то может сказать? Или скажите мне что никакой и я все равно не успокоюсь, пока мне не ответят зачем тогда разработчики ввели их две? Сорри
Я это понял только тогда, когда стал подробнее изучать javascript (а понял ли?)))). Там, если не существует переменной, то она undefined. Так же и тут, в РНР - если переменной не существует, то isset($var) === false и выпадет нотис, если переменная где-то в дальнейшем используется без блока проверки. Если она существует (объявлена (в php - global $var;, в javascript - var omg), то в php она будет null, а в javascript по-прежнему undefined.
Что-то ты меня тоже озадачил. Может быть это как раз разница между: var x: int; x:=NULL; и тем, что она var x: void?
парни? вы че паритесь-то? скока пишу на php как-то с таким мозговым штурмом не сталкивался. оно вам надо? =)
Ноль - это ведь тоже значение. Значение переменной. Но его нет, если нет самой переменной. 440Hz Не мешай людям сны смотреть :lol:
причем замете в языках си и паскаль, я перкрасно понимаю разницу между не обьявлена и null, но в PHP для меня это все размазано, потому как тут все настолько "типоприводимо", и самого понятия "Обьявлена" нет, что я не пойму зачем эта разница здесь? Kreker как я понял в php global, это не обьявление переменной в том смысле в котором говоришь ты, это просто говорит PHP ссылаться на переменную с таким именем "выше" локальной области видимости функции