2011-07-20 14 views
5

Tengo este simple problema. En este sencillo script:Iterar a través de las propiedades de un objeto y modificar el objeto original

<?php 

class MyClass { 
    public var1 = '1'; 
    public var2 = ''; 
    public var3 = '3'; 
} 

$class = new MyClass; 

foreach ($class as $key => $value) { 
    echo $key . ' => ' . $value . '<br />'; 
} 

?> 

el resultado sería:

var1 => 1

var2 =>

var3 => 3

Si quiero recorrer todas esas propiedades para poder averiguar cuál está vacío, ¿cómo puedo asignar un valor a esa propiedad vacía en el objeto?

foreach ($class as $key => $value) { 
    if (empty($value)) { 
     $value = 'something'; 
    } 
} 

... no está funcionando porque supongo que PHP piensa que $value es una variable real, no una referencia.

Respuesta

16

Prueba esto:

foreach ($class as $key => $value) { 
    if (empty($value)) { 
     $value = 'something'; 
     $class->$key = $value; 
    } 
} 
+0

simple, elegante y eficaz. ¡No sé cómo nunca pensé si esto! Un millón de gracias. – AeroCross

Cuestiones relacionadas