2011-12-30 30 views
14

Necesito crear una matriz usando un objeto con formato diferente/estructuraConstruir matriz dinámica en PHP

tengo:

$t = object() 
$t > user = object() 
$t > user > 0 (object) name = 'wilson'; 
$t > user > 0 (object) first = 'carl'; 

tengo que conseguir:

$t = array(
name = wilson 
first name = phil 

Esto es lo probé y donde estoy atascado

foreach($t as $a) { 
     foreach($a as $l) { 
      $arr[$l->0->name] = $l->0->first; // line 10 
     } 
    } 
    print_r($arr); 

Ahora me sale un error:

PHP Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$' in homework1-a-1.php on line 10

¿Qué puedo hacer para arreglarlo?

+0

Parece un error de sintaxis simple. No puedo ver la línea 10, así que no tengo idea. – Phoenix

+0

pongo la línea 10 en mi edición – natalia

+0

las propiedades del objeto deben comenzar con un carácter. Sin embargo, no entiendo qué es lo que quiere lograr, porque parece que mezcló un poco los objetos y las matrices. – KingCrunch

Respuesta

18

Su pregunta es confusa. Esto es lo que entiendo:

dispone de las siguientes:

  • $t, que es un objeto.
  • $t->user, también un objeto.
  • $t->user[0]->name = 'wilson'
  • $t->user[0]->first = 'carl'

Usted dice que necesita para obtener:

  • $t->name = 'wilson'
  • $t->first = 'carl'

se dice 'Phil' en la pregunta, pero el dado objeto $t no tiene referencia a un 'phil', así que no sé si 'phil' aparece de la nada, o qué.

¿Es esta una vista correcta del problema? Si es así, debe aclarar esto en la pregunta. decir $t > user > 0 (object) name no tiene sentido.

Disculpa, esta es una "respuesta", simplemente no podía incluir todo esto en un comentario. Lo borraré si aclaras la pregunta. Espero no ser la única persona confundida por esto.

+0

gracias, prefiero esta solución – natalia

0
$t = object() 
$t > user = object() 
$t > user > 0 (object) name = 'wilson'; 
$t > user > 0 (object) first = 'carl'; 

Código PHP no válido. Si quieres $t en el formato que mostrar, simplemente hacer esto:

$t = array(
'name' => 'wilson', 
'first name' => 'phil' 
); 

Ahora $t es una matriz, con teclas 'name' y 'first name'.

Su bucle foreach no tiene ningún sentido. $t es una matriz de dos cadenas. Looping sobre él simplemente dará los valores 'wilson' y 'phil'.

EDIT: Suponiendo $t se le dio a usted, entonces su bucle debería tener este aspecto:

foreach($t as $a) { 
     foreach($a as $l) { 
      $arr[$l->{0}->name] = $l->{0}->first; 
     } 
    } 

No se puede hacer $l->0. Debe envolver el 0 en {}. $l->{0}.

+0

El punto es que es una tarea de tarea, el objeto está dado, construye una matriz a partir de él. –

+0

@Truth: Lo siento, la pregunta fue un poco confusa. El "código" para '$ t' no tiene sentido, no tengo idea de cómo se ve' $ t'. Luego dice que quiere '$ t' en un formato determinado (que dijiste que se le dio), luego en su ciclo, hace referencia a' $ arr'. Entonces, no estoy seguro de lo que él quiere. –