从一个函数获取对象到另一个函数

时间:2013-05-03 19:50:41

标签: php arrays

我有一个函数可以从数据库中获取所有标签并将它们放入一个数组中,但如果我将该对象带到另一个函数,它将为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);
}

2 个答案:

答案 0 :(得分:2)

这似乎是PHP类的代码片段。如果将变量设置为$labels它位于本地方法范围内,则方法外的任何内容都不会看到该变量,并且在方法完成后会丢失。

要在对象实例上设置变量,请使用$this->labels = ...var_dump($this->labels),或者将其声明为静态self::$labels

如果情况并非如此,那么请忘记static public private个关键字。函数仍然没有看到它们之外的任何东西,所以你有一个丑陋的选择,即在方法前面添加global $labels(业力会为此回复你)或者将$labels bu引用传递给它们方法为&$labels

答案 1 :(得分: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正在访问尚未设置的内容。