php - 无法访问 usort() 函数调用内部的全局变量

标签 php function scope global-variables usort

我尝试使用 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/

相关文章:

javascript - 未初始化的变量不应该总是未定义类型吗

php - 标题中未应用 CSS 样式

c++ - 从函数中获取两个数组并将它们存储在 C++ 中的不同数据类型数组中

php - 使用 Apache Solr 索引 pdf 文件内容

javascript - 在 javascript 中 2 秒内使用函数不超过 1 次

c - 使用 openGL 从 C 中的文件或指针打印值

JavaScript/jQuery 上下文 - 代理?

c++ - if 语句中的变量范围

php - 将 SimpleXML 对象强制为字符串,无论上下文如何

括号目录中的 PHP glob()