1

ユーザー定義クラスのオブジェクトの配列があるとします。PHPで配列の要素を抽出する方法を知りたいです。

// class definition
class User
{
public $fname;
public $lname;
}

// array of objects of the class defined above
$objUser1 = new User():
$objUser2 = new User():
$objUser3 = new User():
$objUser4 = new User():

$alUser = array();
$alUser[] = $objUser1;
$alUser[] = $objUser2;
$alUser[] = $objUser3;
$alUser[] = $objUser4;


// trying to iterate and extract values using typcasting - this does not work, what is the alternative.
foreach($alUser as $user)
{
$obj = (User) $user; // gives error - unexpected $user;
}

これは、Java ArrayList からオブジェクトを抽出するときに Java で行っていた方法であるため、PHP の方法も似ていると考えました。誰でも説明できますか。

4

3 に答える 3

8
foreach ($alUser as $user) {
    $obj = $user;
}

なぜこれに型キャストが必要なのですか?

于 2009-02-12T21:45:41.180 に答える
3

PHP は動的型付け言語です。ほとんどの場合、キャストする必要はありません。

User にキャストすることはできません。型のジャグリングとキャストに関する PHP のドキュメントを参照してください。

この例では、" $user is a object (User)" が 4 回出力されます。

foreach($alUser as $user) {
    echo '$user is a ' . get_type($user);

    if(is_object($user)) {
        echo ' (' . get_class($user) . ')';

    echo "\n";
}
于 2009-02-12T21:55:43.760 に答える
0

たとえば、Eclipse PDT でコード補完用のオブジェクトのタイプを判別すると便利です。そうしないと、配列が作成された場所とそれに配置されたオブジェクトのバックトレースがスタックし、クラスファイルを見て、使用可能な関数を確認します(または、一時的に新しい theObject() を作成して、使用可能なメソッド/プロパティを確認しますオブジェクトの型がわかります. 多くのオブジェクトがそれらの配列とそれらのオブジェクトを作成する関数を呼び出す場合は、それほど簡単ではない場合があるため、それらの配列がどのように作成されたかを確認するためにバックトレースする必要があります)。他のいくつかの IDE は、おそらく phpEd のように型をより適切に判別できると聞きましたか?

于 2009-11-02T19:08:27.633 に答える