Pergunta

Suponha que eu tenho uma matriz de uma objetos da classe definida pelo usuário. Queria saber como faço para extrair os elementos do array em 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;
}

Isso é como eu costumava fazer em java ao extrair objetos do Java ArrayList, daí pensei o caminho PHP pode ser semelhante. Alguém pode explicar isso.

Foi útil?

Solução

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

Por que você precisa typecasting para isso?

Outras dicas

PHP é uma linguagem de tipagem dinâmica. Não há necessidade de elenco na maioria dos casos.

É impossível fundido a um usuário: consulte a documentação do PHP em tipo de malabarismo e lançando .

Este exemplo iria imprimir "$user is a object (User)" quatro vezes.

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

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

    echo "\n";
}

Seria bom por exemplo Eclipse PDT para determinar o tipo de objeto para completar de código. caso contrário, você são backtracing preso, onde a matriz foi criado e quais objetos foram colocados em-lo e em seguida olhar para o arquivo de classe para ver o que estão disponíveis funções (ou temporário criar uma nova theObject () para ver o que está disponível se você métodos / propriedades saber que tipo de objeto ele é. outras vezes pode não ser tão fácil se muitos objetos chamar funções que criam essas matrizes e objetos neles, então tem que backtrace para ver como essas matrizes feitas). Ouviu algumas outras do IDE pode ser capaz de determinar o tipo melhor como PHPEd possivelmente?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top