PHP类函数采用数组数组,返回错误

时间:2011-07-22 17:40:04

标签: php arrays class function multidimensional-array

我是编程的初学者。我正在使用类继承编写代码。这是完整的代码:

require_once('db.php');
class Activity extends DatabaseCall //this is in db.php
{ 

    public $name, $link, $activity_id;

    public function oneActivity( $name, $link, $activity_id )
    {
        $this->name = $name;
        $this->link = $link;
        $this->activity_id = $activity_id;
    } 
    private function activitiesArrays()
    {
        $this->sqlActivities(); //a protected function inherited from Parent
    }

    //Returns array of name + link + activity_id for random activity.
    //Works with function activitiesArrays(), which returns An Array of arrays of
    //names,links,and id's.
    // @param <array> $namesLinksIds_Arrays An Array of arrays of names, links,and  
    //id's.
    public function makesRandomActivity($namesLinksIds_Arrays)
    {
     $list($name, $linkk, $id) = $namesLinksIds_Arrays;
     $length = count($name);
     $rand = rand(0, $length-1);
        $n = $name[$rand];
        $l = $linkk[$rand];
        $i = $id[$rand];
     oneActivity($n, $l, $i);
    }

}

如果我注释掉这段代码,则此代码中的所有内容都有效:

 public function makesRandomActivity($namesLinksIds_Arrays)
{
 $list($name, $linkk, $id) = $namesLinksIds_Arrays;
 $length = count($name);
 $rand = rand(0, $length-1);
    $n = $name[$rand];
    $l = $linkk[$rand];
    $i = $id[$rand];
 oneActivity($n, $l, $i);
}

请帮我弄清楚为什么这段代码不起作用。任何帮助/建议/提示赞赏。

1 个答案:

答案 0 :(得分:1)

以下行不正确:

$list($name, $linkk, $id) = $namesLinksIds_Arrays;

您想使用list()语言构造 - 请删除$

list($name, $linkk, $id) = $namesLinksIds_Arrays;


使用你所做的,PHP将$list(...)解释为调用一个函数,该函数的名称将包含在(不存在的) $link变量中 - 关于这一点,请参阅Variable functions

这基本上意味着您尝试将$namesLinksIds_Arrays分配给函数调用 - 这就是您收到以下错误消息的原因:

Fatal error: Can't use function return value in write context