Определить существует ли переменная

Pascal9x

Новичок
Здравствуйте. Сегодня столкнулся с одной довольно глупой проблемой: нужно определить существует-ли переменная. Дело в том, что я использую переменные со значениями null и мне нужно определять существование таких переменных.

Пример нерабочего кода:
<?php
$x = null;
echo isset($x) ? 'yes' : 'no';
?>
На выходе: no

А хотелось бы что то вроде этого:
<?php
$x = null;
echo variable_exists($x) ? 'yes' : 'no';
?>
На выходе: yes
 

Pascal9x

Новичок
craz
Уважаемый, Вы перед тем как ответы писать читали текст первого сообщения?

Почитал php.net, погуглил. Похоже, что красивого решения проблемы нет, есть только частичные решения:
array_key_exists()
property_exists()
get_defined_vars() - тоже может пригодиться
$GLOBALS - и это пригодится, если переменная глобальная
 

Духовность™

Продвинутый новичок
Сегодня столкнулся с одной довольно глупой проблемой: нужно определить существует-ли переменная. Дело в том, что я использую переменные со значениями null
PHP <> Pascal
может ты просто что-то не так делаешь? зачем вообще нужно определить существует-ли переменная?
 

craz

Нестандартное звание
а кстати $x = null; это не тоже самое что unset($x)? просто ради интереса спрашиваю.
 

Absinthe

жожо
а кстати $x = null; это не тоже самое что unset($x)? просто ради интереса спрашиваю.
Нет.
Первое устанавливает тип переменной в null(и соответственно и значение), второе удаляет переменную из таблицы переменных.
 

craz

Нестандартное звание
Ну с точки зрения внутряка оно понятно... А суть удаленной переменной и переменной приравненной к null я думаю одинаковая.
 

craz

Нестандартное звание
да блин что одна ничем не заполнена что другая не существует, нифика мне такая переменная в скрипте то нужна...
 

Bardak

Новичок
tz-lom, а вы не могли бы реальной пример привести, где вы используете null ?
Очень интересно посмотреть.
 

Духовность™

Продвинутый новичок
Очень интересно посмотреть, зачем тов-щу Pascal9x понадобилось вообще делать такую проверку....
 

AmdY

Пью пиво
Команда форума
чему вы удивляетесь, обычный рефакторинг для уменьшения вложенности
PHP:
if ($_GET['id']) {
     $item = $db->getItemById($_GET['id']);
     // вся цепочка ифов могла бы быть здесь, но когда вложенность ифов 3-4 читается отвратно.
}
if (isset($item) && $item) {
} elseif (isset($item)) {
} else {
}
кстати, паскаль - это математик, а не только язык программирования, так что шитки про ник ложны быть в другой стези, например, про ЧСВ.
 

craz

Нестандартное звание
чему вы удивляетесь, обычный рефакторинг для уменьшения вложенности
PHP:
if ($_GET['id']) {
     $item = $db->getItemById($_GET['id']);
     // вся цепочка ифов могла бы быть здесь, но когда вложенность ифов 3-4 читается отвратно.
}
if (isset($item) && $item) {
} elseif (isset($item)) {
} else {
}
кстати, паскаль - это математик, а не только язык программирования, так что шитки про ник ложны быть в другой стези, например, про ЧСВ.
ну так в чем вопрос то? у тебя правильно у него нет.
 

tz-lom

Продвинутый новичок
отличие NULL от необъявленной:
PHP:
$a = NULL;
fun($a); // OK

unset($a);
fun($a); // fuuuuu
смысл NULL - особое значение ,отличное от типов "содержащих данные" , если позволите так выразиться
примеры использования:
PHP:
function fun($a,$b=NULL)
{
  if($b===NULL) {
    // был 1 параметр
  } else {
    // было 2 параметра
  }
}

/*
Здесь использование NULL на уровне соглашений , конечно можно вызывать fun(1,NULL) и оно будет вести себя как будто передана только одно значение << убран бред чтобы не смущать , см пост grigory ниже >>
*/

function typeConstraint(MyClass $a) { ... }

/*
так как type hinting  запретит передачу false , 0 , '' или чего либо ещё , если бы мы хотели передать отсутствие объекта нам бы пришлось вводить специальное поле (или объект) которое бы использовалось как флаг "меня нет" , уродство
однако typeConstraint(NULL) является допустимым вызовом , это собая возможность NULL
*/

echo json_encode(array('type'=>'myType', 'value'=> NULL )); // так NULL тоже можно использовать,хотя конечно делался он изначально не для этого
P.S.
кстати Духовность™ просто продемонстрировал своё знание паскаля :)
 

Absinthe

жожо
да блин что одна ничем не заполнена что другая не существует, нифика мне такая переменная в скрипте то нужна...
null используется для того, чтобы показать, что в переменной условного(потому что PHP) типа SomeObject не содержится объекта.
 
Сверху