2013-08-12 4 views
-1
function myCheck($in) 
     { return isset($in); } 

$var1='Something'; 
$var2='$var1'; 
$var3='$varNonExitant'; 

Я пытаюсь для того чтобы достигнуть, чтобы использовать myCheck для оценки существования содержания, как это:«Косвенные» Исеть()

myCheck($var2) return true; 
myCheck($var3) return false; 
+4

для этого есть функция php. Это называется isset! :-) –

+1

@NicholasKing - Он, вероятно, знает об этом, так как он пытается написать обертку для него. –

+1

Что вы «действительно» хотите сделать? –

ответ

-2

Когда вы меняете myCheck ($ abc), с установленным $ abc = 123, он получает myCheck (123). Это не допустимый аргумент для isset.

Вы должны дать функцию строку с именем переменной:

function isset_global($variable_name) 
{ 
    return isset($GLOBALS[$variable_name]); 
} 

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

+0

Это всегда будет терпеть неудачу, поскольку внутри функции не существует переменной, кроме '$ in'. – deceze

+0

Плохая идея. Вы всегда будете иметь значение false, поскольку '$$ in' относится к переменной, которая не существует в области функций. –

+0

Редактирование примечаний. Вы можете использовать глобальный. –

6

isset() это на самом деле не является функцией: это язык построить. Таким образом, разрешено делать некоторую магию, недоступную для регулярных функций, например, с использованием несуществующих переменных.

Подводя итог: вы не можете воспроизвести его с помощью специальной функции.

Edit:

Как DaveRandompointed out in a comment ниже, все, что вы можете сделать, это прийти близко, проверяя, является ли переменная Исеть, например:

function variable_isset(&$variable = NULL) { 
    return isset($variable); 
} 

Этот подход имеет два недостатка, хотя:

  1. Это работает, передавая сообщение uns et по ссылке, тем самым создавая ее при вызове. Поскольку он NULL, он все еще не установлен.

  2. Это вызовет Неопределенная переменная Уведомление, если переменная не существует, разрушая всю концепцию изящной обработки необязательных переменных.

Скорее всего, это не требуется. Поэтому остается вопрос, почему вы не можете использовать isset в первую очередь, что было бы намного более необходимо, чтобы дать вам лучшее руководство.

+0

С каких это причин iset() не функция? его перечислены в php-документах по функциям! –

+2

@ Николас Это так прямо там, на странице его руководства ... – deceze

+0

@deceze Я стою исправлено! –

Смежные вопросы