【发布时间】:2012-08-31 17:26:34
【问题描述】:
我有变量可以设置并包含一些字符串,如果没有,我需要以另一种方式找到这个字符串。我决定将三元运算符与匿名函数一起使用,第一个函数在设置变量值时使用,第二个在没有设置时使用。
问题是,第一个函数没有返回任何值,为什么不呢?
// This line is just for testing purposes so the first anonymous function is run
$variable = "value test";
$variable = isset($variable) ?
function() { global $variable; return $variable; } :
function() {
$tmp = JFactory::GetDocument()->base;
$tmp = explode('/', JFactory::GetDocument()->base);
$tmp = explode('-', $tmp[count($tmp)-1]);
unset($tmp[0]);
return implode(' ', $tmp);
};
print_r($variable);
【问题讨论】:
-
好吧,它是在全局范围内声明的,还是在另一个方法或函数中显示的摘录? (那是 local 范围。)
-
会不会是因为在第一个匿名函数中,
$variable实际上超出了范围?我认为,您需要将其作为参数传递。但这看起来确实是一段非常复杂的代码——肯定有更简单的方法吗? -
您实际上并没有执行这些功能。 $variable 将是一个函数,而不是一个变量。
-
我不确定我的变量是否真的是全局变量,因为我的代码在另一个代码中,我看不出它是否只是包含在内,或者调用类似函数等等......所以可能是它不起作用的点,但有没有办法访问一级 globalER 变量? ...我也试过
print_r($variable()),只是忘了给我的帖子写括号
标签: php global-variables