PDA

View Full Version : [PHP] Ottenere indice oggetto


kwb
23-04-2014, 21:43
Ciao a tutti!
Non sono molto esperto di PHP e sono incappato in quella che credo essere una banalità, ma non ho trovato soluzione sulla rete.

Ho una struttura così fatta:
http://i.imgur.com/yKbcvQs.png
Quindi un array che contiene oggetti i quali contengono a loro volta due stringhe.

Quello che voglio fare io è prendere ogni nid contenuto dentro l'oggetto e creare un array associativo in cui scrivo che, ad esempio, l'oggetto con indice 0 ha nid = 17.

Il problema che ho è che non riesco a tirare fuori l'indice dell'oggetto.
Ho provato a far girare l'array result con un ciclo for, ma da errore.
Col foreach non ho combinato molto...
:help:

bouncey2k
23-04-2014, 22:19
Scusa ma l'indice dell'oggetto corrisponde all'indice dell'array?

Se non ho capito male...


$result[0] = oggetto;
$result[1] = oggetto;
$result[2] = oggetto;
$result[3] = oggetto;


Quindi basta ciclare l'array e a sua volta ciclare i valorei dell'array (cioè gli oggetti).


foreach($array as $key => $value){
foreach($value as $obj_key => $obj_value){
$new_array[$key] = $obj_value['nid'];
}
}

kwb
23-04-2014, 22:32
foreach($array as $key => $value){
foreach($value as $obj_key => $obj_value){
$new_array[$key] = $obj_value['nid'];
}
}


Grazie! L'unico errore è su $obj_value['nid'].
Ho risolto con

foreach ($result as $index=>$obj) {
foreach ($obj as $property => $value) {
if($property == 'nid')
$newArray[$index] = $value;
}
}

Cioè togliento ['nid']

bouncey2k
23-04-2014, 23:00
Grazie! L'unico errore è su $obj_value['nid'].
Ho risolto con

foreach ($result as $index=>$obj) {
foreach ($obj as $property => $value) {
if($property == 'nid')
$newArray[$index] = $value;
}
}

Cioè togliento ['nid']

Scusa, è la stanchezza... senza che sia necessario fare un controllo con l'IF è possibile ottenere quello che vuoi con un solo foreach.


foreach ($result as $index=>$obj) {
$newArray[$index] = $obj['nid'];
}

kwb
24-04-2014, 09:16
Scusa, è la stanchezza... senza che sia necessario fare un controllo con l'IF è possibile ottenere quello che vuoi con un solo foreach.


foreach ($result as $index=>$obj) {
$newArray[$index] = $obj['nid'];
}


:D In realtà ho provato e mi ritorna errore:

Fatal error: Cannot use object of type stdClass as array

Ma usando

$newArray[$index] = $obj->nid

Funziona ;)

bouncey2k
24-04-2014, 11:17
E come dargli torto? L'ho considerati array e non oggetti. Ad ogni modo il principio era quello :D