2010-08-06 15 views
11

$var es una matriz:Actualización de una matriz

Array (
[0] => stdClass Object ([ID] => 113 [title] => text) 
[1] => stdClass Object ([ID] => 114 [title] => text text text) 
[2] => stdClass Object ([ID] => 115 [title] => text text) 
[3] => stdClass Object ([ID] => 116 [title] => text) 
) 

desea actualizar en dos pasos:

  • Obtener [ID] de cada objeto y tirar su valor de posición del contador (me refiero a [0], [1], [2], [3])
  • Retire [ID] después de lanzar

Por último, una matriz actualizada ($new_var) debe verse como:

Array (
[113] => stdClass Object ([title] => text) 
[114] => stdClass Object ([title] => text text text) 
[115] => stdClass Object ([title] => text text) 
[116] => stdClass Object ([title] => text) 
) 

cómo hacer esto?

Gracias.

Respuesta

19
$new_array = array(); 
foreach ($var as $object) 
{ 
    $temp_object = clone $object; 
    unset($temp_object->id); 
    $new_array[$object->id] = $temp_object; 
} 

Supongo que hay más en sus objetos y solo desea eliminar la identificación. Si solo desea el título, no necesita clonar el objeto y solo puede configurar $new_array[$object->id] = $object->title.

+0

+1 Una solución más ordenada que la mía. :-) –

2

habría pensado que esto funcionaría (no tienen acceso intérprete, por lo que podría requerir ajustes):

<?php 

    class TestObject { 
     public $id; 
     public $title; 

     public function __construct($id, $title) { 

      $this->id = $id; 
      $this->title = $title; 

      return true; 
     } 
    } 

    $var = array(new TestObject(11, 'Text 1'), 
       new TestObject(12, 'Text 2'), 
       new TestObject(13, 'Text 3')); 
    $new_var = array(); 

    foreach($var as $element) { 
     $new_var[$element->id] = array('title' => $element->title); 
    } 

    print_r($new_var); 

?> 

Por cierto, es posible que desee actualizar sus convenciones de denominación de variables a algo más significativo. :-)

+0

No funciona, da un error: No se puede usar el objeto de tipo stdClass como matriz – James

+0

@Ignatz - Tener acceso a una máquina con PHP en este momento - He corregido el código y proporcioné un ejemplo más completo. Por cierto, si tiene un getter/setter, debe cambiar los vars de clase a private y usar el setter dentro del iterador de foreach. –

+0

gracias hombre por su tiempo – James

Cuestiones relacionadas