Skip to content

3 septiembre, 2010

Convertir Array de objetos con stdClass

El PHP stdClass () es algo que no está bien documentada, pero voy a tratar de arrojar algo de luz sobre el asunto. stdClass es un objeto de PHP por defecto que no tiene ningún miembro predeterminado. El nombre stdClass es usado internamente por Zend y es reservado. Eso significa que no se puede definir una clase llamada stdClass en su código PHP.

Se puede utilizar para crear instancias de objetos de forma manual genérico que se pueden establecer las variables de miembro, éste es útil para pasar objetos a otras funciones o métodos que esperar para tomar un objeto como argumento. Un uso aún más probable es que emitan un arreglo para un objeto que ocupa cada valor en la matriz y se agrega como una variable miembro con el nombre basado en la clave de la matriz.

He aquí un ejemplo de abajo que convierte una matriz a un objeto a continuación. Este método se llama conversión de tipos.

<?php
$person = array (
 'firstname' => 'Richard',
 'lastname' => 'Castera'
);
$p = (object) $person;
echo $p->firstname; // Will print 'Richard'
?>

He aquí un ejemplo de abajo que convierte una matriz multi-dimensional de un objeto. Esto se logra a través de la recursividad.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
function arrayToObject($array) {
 if(!is_array($array)) {
 return $array;
 }
 
 $object = new stdClass();
 if (is_array($array) && count($array) > 0) {
 foreach ($array as $name=>$value) {
 $name = strtolower(trim($name));
 if (!empty($name)) {
 $object->$name = arrayToObject($value);
 }
 }
 return $object; 
 }
 else {
 return FALSE;
 }
}
?>
1
2
3
4
5
6
<?php
$person = array (
 'first' => array('name' => 'Richard')
);
$p = arrayToObject($person);
?>

 

1
2
3
4
<?php
// Now you can use $p like this:
echo $p->first->name; // Will print 'Richard'
?>

 

No hay articulos relacionados.

Read more from Php, Programacion

Share your thoughts, post a comment.

(required)
(required)

Note: HTML is allowed. Your email address will never be published.

Subscribe to comments