2011-12-30 15 views
14

ho bisogno di creare un array usando un oggetto utilizzando formato diverso/strutturacostruire array dinamico in PHP

ho:

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

ho bisogno di ottenere:

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

Ecco cosa Ho provato e dove sono bloccato

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

Ora ho un errore:

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

Che cosa posso fare per risolvere il problema?

+0

Sembra un semplice errore di sintassi. Non riesco a vedere la riga 10 quindi non ne ho idea. – Phoenix

+0

inserisco la riga 10 nella mia modifica Le proprietà dell'oggetto – natalia

+0

devono iniziare con un carattere. Tuttavia, non capisco, cosa vuoi ottenere, perché sembra, che hai mescolato un po 'gli oggetti e gli array. – KingCrunch

risposta

18

La tua domanda è confusa. Questo è quello che ho capito:

Hai la seguente:

  • $t, che è un oggetto.
  • $t->user, anche un oggetto.
  • $t->user[0]->name = 'wilson'
  • $t->user[0]->first = 'carl'

Tu dici è necessario per ottenere:

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

si dice 'phil' nella questione, ma il dato oggetto $t non ha alcun riferimento a un 'phil' quindi non so se 'phil' appare dal nulla, o cosa.

Questa è una visione corretta del problema? Se è così, è necessario chiarire questo nella domanda. dire $t > user > 0 (object) name non ha senso.

Spiacente, questa è una "risposta", non potrei proprio adattarmi a tutto questo in un commento. Lo cancellerò se chiarirai la domanda. Spero di non essere l'unica persona confusa da questo.

+0

grazie, preferisco questa soluzione – natalia

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

Questo non è valido codice PHP. Se si desidera $t nel formato mostrate, solo fare questo:

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

Ora $t è un array, con le chiavi 'name' e 'first name'.

Il tuo ciclo foreach non ha alcun senso. $t è una matrice di due stringhe. Passandoci sopra passerai semplicemente i valori 'wilson' e 'phil'.

EDIT: Supponendo $t è stato dato a voi, allora il vostro ciclo dovrebbe essere simile a questo:

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

Non si può fare $l->0. È necessario avvolgere lo 0 in {}. $l->{0}.

+0

Il punto è che è un compito a casa, l'oggetto è dato, costruisci una matrice da esso. –

+0

@Truth: Siamo spiacenti, la domanda è stata un po 'confusa. Il "codice" per "$ t" non ha senso, non ho idea di cosa assomigli '$ t'. Poi dice che vuole '$ t' in un certo formato (che tu hai detto che è stato dato), quindi nel suo ciclo, fa riferimento a' $ arr'. Quindi, non sono sicuro di cosa voglia. –