我尝试使用 usort()
并在其函数范围内利用全局变量,但没有成功。
我已将代码简化为简单的框架以展示我的意思:
$testglobal = 1;
function cmp($a, $b) {
global $testglobal;
echo 'hi' . $testglobal;
}
usort($topics, "cmp");
假设 usort()
运行两次,我的期望是输出:
hi1hi1
相反,我的输出是:
hihi
我已阅读手册 ( http://us.php.net/usort ),并且没有发现访问全局变量有任何限制。如果我将 usort()
分配给我回显的变量,它会输出 1,因此 usort()
肯定运行成功(另外,还有所有这些“hi” ”)。
最佳答案
无法重现“错误”,键盘也无法重现:http://codepad.org/5kwctnDP
您还可以使用对象属性代替全局变量
<?php
class Foo {
protected $test = 1;
public function bar($a, $b) {
echo 'hi' . $this->test;
return strcmp($a, $b);
}
}
$topics = array(1,2,3);
$foo = new Foo;
usort($topics, array($foo, 'bar'));
关于php - 无法访问 usort() 函数调用内部的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/894990/