Функция класса PHP, которая принимает массив массивов, возвращает ошибку - PullRequest
1 голос
/ 22 июля 2011

Я новичок в программировании. Я пишу код с использованием наследования классов. Вот полный код:

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 Ответ

1 голос
/ 22 июля 2011

Следующая строка неверна:

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

Вы хотите использовать языковую конструкцию list() - поэтому удалите $:

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


Используя то, что вы сделали, PHP интерпретировал $list(...) как вызов функции, имя которой содержалось бы внутри (не существует) $link переменной - об этом см. Переменные функции .

Что в основном означает, что вы пытались назначить $namesLinksIds_Arrays для вызова функции - вот почему вы получили следующеесообщение об ошибке:

Fatal error: Can't use function return value in write context 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...