PHP и с чем его едят....

ostapoff

Member
isset делает проверку инициализировалась ли переменная тоесть нулл не нулл не имеет значение если память уже выделена.
а вообще разбирайтесь с трансформацией типов или юзайте сравнение типов ===/!==

0, '', null == false
!null == true
true === true
0 !== false
Мадам, специально для Вас повторяю - trim возвращаяет строку, т.е. if(isset(trim(null))) будет всегда true. Именно по-этому оригинальный код и не работал. И оставьте plz свой менторский тон для школьников
 

akick

letter to god
Мадам, специально для Вас повторяю - trim возвращаяет строку, т.е. if(isset(trim(null))) будет всегда true. Именно по-этому оригинальный код и не работал. И оставьте plz свой менторский тон для школьников
не мадам ну да ничиво хеехе. Замечание как таковое я вам не делал не кипятитесь, а цитировал для указания цели поста.
 

[fly]

Sweet orange
Я так понял, что лучшим способ проверить пустую переменную, это empty. А чем отличаются этот вариант $var=="" от empty($var)?
 

PainKiller

Пастафарианец
Команда форуму
Супер Модератор
Если мир сошелся клином на этом свойстве трима, никто не мешает сделать свой трим, который не будет возвращать строку. Решение же, чо.
А вообще, подобные вещи говорят о несостоятельности языка, да простят меня Dre, bllem и весь остальной пантеон php программеров :D
О trim


О null


Как показывает прочтение статьи, trim не должна принимать null, но принимает, а по уму должна была бы ругаться.
ostapoff, оставьте свой "гуровский" тон для тех, для кого вы посоветовали оставить менторский тон тов. akick.
 

ostapoff

Member
PainKiller: Вы невнимательно читаете документацию и делаете неправильные выводы. trim() принимает string (!!!) и все, что Вы будете туда передавать, будет преобразовано в string а именно, null -> "". С чего Вы взяли, что trim вообще принимает null? PHP язык со слабой динамической типизацией и именно так должно происходить преобразование типов в этих языках.
 

PainKiller

Пастафарианец
Команда форуму
Супер Модератор

Вот что-то мне подсказывает, что документацию я читаю внимательно.

PHP:
echo '<pre>';
var_dump(null);
var_dump('null');
echo '</pre>';
Внезапно:
NULL
string(4) "null"
А исходя из вышесказанного, разницы между ними быть не должно, не?)
Про преобразования я как раз там ничего и не нашел(в документации), может быть она у нас отличается?

P.S.
Дабы не пустословить, я одно время писал на пыхе, но потом надоело, частично из-за таких вещей.
 

ostapoff

Member
void var_dump ( mixed $expression [, mixed $... ] )
string trim ( string $str [, string $charlist ] )

Вы разницу видите?

Буквально в случае trim при передаче null компилятор (!) делает след. Преобразований типа:

trim( (string) NULL )
 

PainKiller

Пастафарианец
Команда форуму
Супер Модератор
Ок, но не компилятор, а интерпретатор. Далее переливать из пустого в порожнее смысла не вижу)
 

ostapoff

Member
Я специально отметил ! это слово. Если Вы внимательно посмотрите исходный код PHP, Вы поймете почему. При выполнении PHP 5.x компилирует исходный код в байт-код, который затем выполняется на виртуальной машине Zend VM. Режим потоковой интерпретации в php был упразднен с версии 4.0
Для примера, вами-же любимый перл с 6й версии компилирует исходник в байт-код для parrot VM.

Простите меня за резкость, но Вы просто не знаете основ самого языка.
 
Зверху