Вопрос

Предположим, у меня есть массив объектов пользовательского класса.Хотел узнать, как извлечь элементы массива в 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 при извлечении объектов из Java ArrayList, поэтому подумал, что способ PHP может быть похожим.Может кто-нибудь объяснить это.

Это было полезно?

Решение

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

Зачем вам для этого нужна типизация?

Другие советы

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

Невозможно передать пользователю:см. документацию PHP на жонглирование типами и кастинг.

В этом примере будет напечатано "$user is a object (User)" четыре раза.

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

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

    echo "\n";
}

Было бы неплохо, например, Eclipse PDT определить тип объекта для завершения кода.в противном случае вы застрянете в обратной трассировке, где был создан массив и какие объекты были помещены в него, а затем посмотрите файл класса, чтобы увидеть, какие функции доступны (или временно создайте новый theObject(), чтобы увидеть, какие методы/свойства доступны, если вы узнать, что это за объект.в других случаях может быть не так просто, если многие объекты вызывают функции, которые создают эти массивы и объекты в них, поэтому приходится выполнять обратную трассировку, чтобы увидеть, как эти массивы созданы).Слышал, что некоторые другие IDE могут определять тип лучше, например, phpEd?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top