2011-07-22 6 views
1

私はプログラミングの初心者です。私はクラス継承を使ってコードを書いています。ここでは、完全なコードは次のとおりです。私はこのコードをコメントアウトする場合は、このコードで配列の配列をとるPHPクラス関数はエラーを返します

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

次の行が正しくありません:

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

あなたはlist()言語構造を使用する - 削除、そう$

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


あなたが何をしたか使用して、PHPはintepreted $list(...)は、(含まれていない)の中に含まれているはずの関数を呼び出すものである。$link変数- これについては、Variable functionsを参照してください。

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

どのようにシンプル:あなたは、次のエラーメッセージが出た理由である - 基本的には、機能invokationに$namesLinksIds_Arraysを割り当てるしようとしていた意味

。ありがとうございました! – Marina

+0

あなたは大歓迎です:-) *(私は少しの情報、btwを追加するために私の答えを数回編集しました)* –

関連する問題