PHP Array Extrahieren Objekt
Frage
Angenommen, ich eine Reihe von Objekten an der benutzerdefinierten Klasse. Wollte wissen, wie kann ich die Elemente des Arrays in PHP zu extrahieren.
// 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;
}
Das ist, wie ich früher in Java zu tun, während Objekte aus der Java Arraylist zu extrahieren, dachte daher die PHP ähnlich sein könnte. Kann es mir jemand erklären.
Lösung
foreach ($alUser as $user) {
$obj = $user;
}
Warum brauchen Sie eine Schublade gesteckt für das?
Andere Tipps
PHP ist eine dynamisch typisierte Sprache. Es gibt keine Notwendigkeit, in den meisten Fällen zu werfen.
Es ist unmöglich, einen Benutzer zu werfen: siehe PHP-Dokumentation auf $user is a object (User)" viermal gedruckt werden.
foreach($alUser as $user) {
echo '$user is a ' . get_type($user);
if(is_object($user)) {
echo ' (' . get_class($user) . ')';
echo "\n";
}
Es wäre schön, zum Beispiel Eclipse PDT den Typ des Objekts für Code Completion zu bestimmen. sonst sind Sie stecken Backtracing, wo das Array erstellt wurde und welche Objekte wurden in sie gesetzt und dann in der Klassendatei, um zu sehen, welche Funktionen zur Verfügung stehen (oder Temp ein neues theObject () erstellen, um zu sehen, welche Methoden / Eigenschaften, wenn Sie verfügbar sind wissen, welche Art von Objekt ist es. andermal nicht so einfach sein, wenn viele Objekte Funktionen aufrufen, die diese Arrays und Objekte in ihnen zu schaffen, so zu Backtrace haben, um zu sehen, wie diese Arrays gemacht). Gehört ein paar andere IDE kann in der Lage sein Typ bestimmen besser wie PhpED möglicherweise?