php函数检查变量是否存在于函数之外

时间:2011-07-10 21:08:28

标签: php

我需要一个php函数来检查变量是否存在于函数之外,如果它不存在则为其分配一个默认值。

函数将类似于:function if_exist($argument, $default = '')其中$argument将是函数外的任何变量,它可以是变量的变量,$default将是变量的默认值,如果变量不存在,非常感谢,请帮助,谢谢。

请避免在功能中使用全球范围,因为我听说这对网站的安全性不利。

5 个答案:

答案 0 :(得分:4)

您可以$argument pass-by-reference

function if_exist(&$argument, $default="") {
   if(!isset($argument)) {
       $argument = $default;
       return false;
   }
   return true;
}

DEMO

答案 1 :(得分:0)

有两种方法可以解决这个问题。您是否正在寻找第一个非空值或者是否设置了实际变量...

第一个用例很简单......要获取非空的第一个变量的值,请定义一个函数:

function coalesce() {
  $args = func_get_args();

  if(is_array($args)) return null;

  foreach($args as $arg) {
    if($arg !== null) return $arg;
  }

  return null;
}

使用此功能很简单。只需使用许多不同的参数调用coalesce(),它将始终返回它遇到的第一个非空值。

$myVar = coalesce($myVar, null, 'Hello There', 'World');
echo $myVar; // Hello There

但是,如果您正在寻找一个函数来检查变量是否已定义,并且未定义变量,那么您需要创建一个强制第一个参数作为参考的函数。

function set_default(&$variable, $defaultValue = null) {
  if(!isset($variable)) {
    $variable = $defaultValue;

    return false;
  }

  return true;
}

答案 2 :(得分:0)

我不明白为什么你想要这个功能。

$a = isset($a) ? $a : "my default string";

每个人都会理解你的代码所做的事情,而不必诉诸PHP的鲜为人知的“功能”,并且必须查看你的函数体,看看它的作用。

即使它看起来像是函数调用,但事实并非如此。 isset()语言构造!这就是提出通知的原因。

答案 3 :(得分:0)

这个怎么样:

function setGlobalIfNotSet( $variableName, $defaultValue = false ) {

  if ( ! isset( $variableName )) {

    global $$variableName;

    $$variableName = $defaultValue;

  }

}

答案 4 :(得分:-1)

您可能正在寻找isset()

编辑:没有正确解释。

您可以创建一个使用isset的功能。

function isset_default($v, $default = '') { 
    return isset($v) ? $v : $default;
}

用法:

$v = isset_default($v, 'somedefaultvalue');