1

オブジェクトの配列から特定の値 (メンバー値) を取得する方法は?

私のコードは非常に単純です:

$people = array();

class Person {
    public $id;
    public $name;
    public $family_name;
    public $dob;
    public $image;

    public function __construct($id, $name, $family_name, $dob, $image){
        $this->$id = (string) $id;
        $this->$name = (string) $name;
        $this->$family_name = (string) $family_name;
        $this->$dob = (string) $dob;
        $this->$image = (string) $image;
    }

    public function get_id(){
        return $this->id;
    }
}

for ($i=0;$i<$no_clients;$i++)
{
    array_push($people, new Person($_SESSION['user_clients'][$i]['client_id'], $_SESSION['user_clients'][$i]['client_name'], $_SESSION['user_clients'][$i]['client_family_name'], $_SESSION['user_clients'][$i]['client_dob'], ROOT_URL.$_SESSION['user_clients'][$i]['client_img']));
}

今、私は人の配列の中から人のIDを取得したいと思います

$error = $people[$i]->get_id(); //doesn't seem to work
//not getting a value back even though the session variable is correct

おそらくご覧のとおり、私は PHP の初心者なので、どんなアドバイスでも大歓迎です。

ありがとう

4

2 に答える 2

3

コンストラクターが間違っています (プロパティの前に $ 記号がありません)

   $people = array();

    class Person {
        public $id;
        public $name;
        public $family_name;
        public $dob;
        public $image;

        public function __construct($id, $name, $family_name, $dob, $image){
            $this->id = (string) $id;
            $this->name = (string) $name;
            $this->family_name = (string) $family_name;
            $this->dob = (string) $dob;
            $this->image = (string) $image;
        }

        public function get_id(){
            return $this->id;
        }
    }

    for ($i=0;$i<$no_clients;$i++)
    {
        $p=new Person($_SESSION['user_clients'][$i]['client_id'],       $_SESSION['user_clients'][$i]['client_name'], 
$_SESSION['user_clients'][$i]['client_family_name'], 
$_SESSION['user_clients'][$i]['client_dob'], 
ROOT_URL.$_SESSION['user_clients'][$i]['client_img']);
       //print_r($p); //--> check your object
        array_push($people, $p);
    }

//print_r($people);

Array ( [0] => Person Object ( [id] => 1 [name] => M [family_name] => C [dob] => 2011-07-21 [image] => image/1_margaret.jpg ) )

編集:

おそらく最後の値が 1 だったので、その $i カウンターをリセットします。さらにforeachループを使用することをお勧めします。

foreach ($people as $person){
    echo $person->get_id();
    }
于 2012-08-26T13:55:30.267 に答える
2

コンストラクター コードが正しくありません。プロパティを間違って参照しています。プロパティ名の先頭から $ を削除します。

例: 変更

$this->$id = $id

$this->id = $id
于 2012-08-26T13:57:28.987 に答える