0

我有一个函数,它从数据库中获取所有标签并将它们放入一个数组中,但是如果我将对象带到另一个函数中,它将为 NULL

private static $labels='blaat';

public function loadDatabaseLabels(){
    $res=DB::query("SELECT * FROM labels");
    $label_array=array();
    while($row=mysqli_fetch_assoc($res)){
        $label_array[$row['indicator']]=$row['text'];
    }
    $labels = new label();
    $labels->labels=$label_array;
}

public function getLabel($indicator){
    var_dump($labels->label);
}
4

2 回答 2

2

这似乎是一个 PHP 类的代码片段。如果您$labels在本地方法范围内设置变量,则方法之外的任何东西都看不到它,并且在方法完成后会丢失。

要在对象实例上设置变量,请使用$this->labels = ...and var_dump($this->labels),或者当它声明为静态时,self::$labels, 来代替。

如果不是这种情况,那么忘记static public private关键字。函数仍然看不到它们之外的任何东西,所以你有一个丑陋的选择,可以global $labels在方法前面添加(业力会因此而回击你)或将$labelsbu 引用传递给这两个方法作为&$labels.

于 2013-05-03T19:56:37.577 回答
0

这里有几个问题。首先,$labels声明private static- 这意味着您可以使用以下方式访问它self::$labels

// set like this:
self::$labels->labels = $labels_array;

public function getLabel($indicator){
    var_dump(self::$labels->label);
}

其次,您不是在设置self::$lables->label,而是self::$labels->labels(注意复数标签)。所以在上面的函数中,var_dump正在访问尚未设置的东西。

于 2013-05-03T20:25:21.470 回答