¿Cómo puedo recorrer todas las propiedades del objeto? Ahora mismo tengo que escribir una nueva línea de código para imprimir cada propiedad del objeto
echo $obj->name;
echo $obj->age;
¿Puedo recorrer todas las propiedades de un objeto usando foreach loop o cualquier loop?
Algo como esto
foreach ($obj as $property => $value)
foreach
bucle que está haciendo bienforeach
(con=>
no->
) para recorrer las propiedades públicas del objeto . También puede hacer que su clase sea Traversable si desea otro comportamiento.Respuestas:
Si esto es solo para depurar la salida, puede usar lo siguiente para ver todos los tipos y valores también.
Si desea más control sobre la salida, puede usar esto:
foreach ($obj as $key => $value) { echo "$key => $value\n"; }
fuente
Para propósitos de prueba, uso lo siguiente:
//return assoc array when called from outside the class it will only contain public properties and values var_dump(get_object_vars($obj));
fuente
Aquí hay otra forma de expresar la propiedad del objeto.
foreach ($obj as $key=>$value) { echo "$key => $obj[$key]\n"; }
fuente
\ArrayAccess
o es unarray
, de lo contrario se lanza lo siguiente:FATAL ERROR Uncaught Error: Cannot use object of type SomeType as array
A veces, es necesario enumerar las variables de un objeto y no con fines de depuración. La forma correcta de hacerlo es usando get_object_vars ($ object). Devuelve una matriz que tiene todas las variables de clase y su valor. A continuación, puede recorrerlos en un bucle foreach. Si se usa dentro del objeto en sí, simplemente haga get_object_vars ($ this)
fuente