Как задать что переменная неопределена?

Статус
В этой теме нельзя размещать новые ответы.

KolyaA

Новичок
Как задать что переменная неопределена?

Есть ли в пхп что-нибудь вроде $a = undefined; ?
 

KolyaA

Новичок
Спасибо.
Но не совсем врубаюсь, как сделать если я хочу задать переменную, но пока не хочу определять её значение.

1.

$a;

2.

$a;
unset($a);

3.

unset($a);


Все три способа кончаются предупреждениями
 

Фанат

oncle terrible
Команда форума
Вас, ивановых, не поймешь. То не определена, то определена.
Чем тебя не устраивает при объявлении переменной задавать значение, дефолтное?
 

KolyaA

Новичок
Смысл в чем:

1.Задаю переменную
2.Если выполняются какие-то условия, то какие-то присваиваю ей числовые значения, которые в т.ч могут быть = 0

Поэтому пока условия не были выполнены я не могу переменной ничего присваивать.
 

Фанат

oncle terrible
Команда форума
Кстати, это тот случай, когда уместна проверка isset
то есть,
if (!isset($a)) echo "Не определена"
elseif ($a===0) echo "Ноль"
else echo $a;

чем не вариант?
 

KolyaA

Новичок
*****, спасибо за помощь.

Проверка понятно, но это уже потом, сначала же задать надо было, что переменная неопределена.
 

Фанат

oncle terrible
Команда форума
Если переменная не определена, то это специально задавать не нужно. Она изначально не определена.
 

KolyaA

Новичок
Противоположный пример:

PHP:
<?php
$b = $this->_getParam('nomer1');
$c = $this->_getParam('nomer2');

if($b>$c)
{
  $a=0;
}

$mas = array($a,$b,$c);
Здесь нужно нарочно задать, что $a может быть неопределена.
 

Dl

Новичок
То есть в функции будут манипуляции над неопределенной переменной?
 

Активист

Активист
Команда форума
KolyaA
Ты лучше расскажи, что бы пытаешься сотворить?

PHP:
if (isset($a)) { // вот тут если и была определена переменная раньше
unset($a); // больше не будет определена (удалена из памяти)
}
if ($b > $c) {
$a = 0; // вот тут , если $b>$c - то переменная будет определена, значение ее будет 0 типом int
}

$mas = array($a,$b,$c); // в том случае, если $b<$c, то переменная $a определена не будет, иначе - 0
Включи вывод ошибок и установи error_reporting(E_ALL) в начале скрипта и ты будешь видить по нотисам, что определено, что нет.
 

Фанат

oncle terrible
Команда форума
Активист
ему нужно декларировать переменную с неопределенным значением. Это именно null.
Но это я от себя домысливаю, единственный разумный вариант. а что у него в голове - то загадка.
 

KolyaA

Новичок
*****
Именно.
И никакой загадки нет.

-~{}~ 26.11.08 20:10:

А почему твоё имя не высвечивается?
 

fixxxer

К.О.
Партнер клуба
кстати насчет null и isset явно напрашивается уточнение - ибо очень многие не в курсе ;)

PHP:
$a = NULL; var_dump( isset($a) );
Код:
bool(false)
 

kstati

Новичок
Но и оно не является проблемой ;)
PHP:
function isset2($varName, $baseArray=NULL) {
	if ( !is_array($baseArray)  ) { 
		$baseArray = &$GLOBALS ; 
	}
	return array_key_exists($varName, $baseArray) ? true : false;
}

$d = NULL;
echo "d ";
echo isset2("d") ? "defined" : "undefined"; 
echo "\nz ";
echo isset2("z") ? "defined" : "undefined";
 

fixxxer

К.О.
Партнер клуба
ну это для говнокода с глобальными переменными, так то только через error handler

а вообще проблемой скорее является ситуация когда надо узнать разницу между null и undefined :))
 

kstati

Новичок
fixxxer
Ой, да ладно тебе отрываться беспочвенно.
а так?
PHP:
 isset2("d", $_POST); // и при чем здесь глобалз? )
Я ж, так надеюсь, что ты читаешь и вдумываешься в ответы других, а не просто плюешься постами на отшибись, поэтому уточни-ка, пожалуйста: что ты имеешь ввиду, когда говоришь, что проблематично узнать null или undefined? Вдумчиво, и подумай еще раз. Лучше глядя на предоставленную мною выше функцию isset2.
Расширим пример, приписав далее:
PHP:
 unset ($d);
echo "\nunset($d), d is ";
echo isset2("d") ? "defined" : "undefined";
--- Updated
Заметил сам у себя ошибку, которая не касается вопроса напрямую, но ошибка есть.
В варианте выше возможно игнорирование второго параметра и использование вместо него $GLOBALS (если он не массив) , что логически не верно.
Поправил:
PHP:
function isset2($varName, $baseArray=NULL) { 
    if ($baseArray === NULL) $baseArray = &$GLOBALS ;  
    if ( !is_array($baseArray)  )  return false;
    return array_key_exists($varName, $baseArray) ? true : false; 
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху