循环中的PHP范围问题

时间:2014-11-26 06:42:58

标签: php loops scope

我试过搜索,但无法弄清楚为什么会失败。

    public function slim_items( $faties ) {

    $smallies = array ();
    global $faties;

    require_once 'wp-content/plugins/cl-rest/modules/CLBasicItem.php';
    require_once 'wp-content/plugins/cl-rest/helpers.php';

    foreach ($faties as $fat){
        $smallies[]=new CLBasicListItem($fat);
    }

    return $smallies;

}

此功能是课程的一部分。问题是一旦foreach(我试过一个简单的for)循环开始运行,$ fat变为null。一旦进入循环范围,它就不会引用$ faties。

我在这做错了什么,拜托? $ faties真的必须申报全球吗?我注意到你甚至不能将它们全局声明为类字段。

如果有人可以帮助推荐一个除了Eclipse for PHP之外的开源IDE,我将非常感激。也许我做错了,但我发现简单的任务,如单步执行代码和设置断点是非常严峻的考验。我遇到的所有异常方式和IDE /堆栈几乎没有显示实际原因或完全错过了问题。实际上,PHP / Apache在出现错误时默认发出的消息通常比eclipse提供奇怪的捕获异常的时间更有用。

编辑:下面回答得更好,但我可以发誓我尝试了代码而没有宣布$ faties为全局(甚至根本没有)并且它不起作用。

让我更加沮丧
public function slim_items( $faties ) {

    global $uglies, $smallies;
    $uglies=$faties;
    $smallies = array ();

    require_once 'wp-content/plugins/cl-rest/modules/CLBasicItem.php';
    require_once 'wp-content/plugins/cl-rest/helpers.php';

    foreach ($uglies as $fat){
        $smallies[]=new CLBasicListItem($fat);
    }

    return $smallies;

}

到现在为止还没回来检查。谢谢大家,因为你的解决方案明显更好

2 个答案:

答案 0 :(得分:1)

这有用吗?

public function slim_items( $faties ) {

    $smallies = array ();
    // global $faties; <-- this is already declared

    require_once 'wp-content/plugins/cl-rest/modules/CLBasicItem.php';
    require_once 'wp-content/plugins/cl-rest/helpers.php';

    foreach ($faties as $fat){
        $smallies[]=new CLBasicListItem($fat);
    }

    return $smallies;

}

答案 1 :(得分:0)

注意public function slim_items( $faties ) {global $faties;您将$fatties重新声明为  全球性的。