Buonasera a tutti,
sto perdendo il sonno su un problema...
Parto da un file XML del tipo seguente, generato via API dalla classe subito sotto:
Codice PHP:
<response status="success">
<4137071924090694> (Customer unique internal "code")
<earned>6021</earned>
<redeemed>-6001</redeemed>
<balance>20</balance>
<balance_equivalent>0.02</balance_equivalent>
<earned_equivalent>6.02</earned_equivalent>
<redeemed_equivalent>-6</redeemed_equivalent>
<first_name>Jane</first_name>
<last_name>Doe</last_name>
</4137071924090694>
...
</response>
L'estratto della classe di nome "customerBalance" è il seguente:
Codice PHP:
foreach($result->customer as $customer) {
$member_card[$i++] = array('customer_rank'=>$k++,
'card_number'=>$customer->card_number,
'customer_code'=>$customer->customer_code,
'customer_first_name'=>$customer->first_name,
'customer_last_name'=>$customer->last_name,
'customer_balance'=>$customer->balance);
}
return $member_card;
mi servono solo pochi dati, rispetto a quelli restituiti dall'XML e dalla chiamata $result->customer as $customer, motivo per il quale mi costruisco e ritorno l'array $member_card.
Nel file principale faccio un "classico"
Codice PHP:
foreach (customerBalance() as $key=>$valore) {
$rank = $valore["customer_rank"];
$nome = $valore["customer_first_name"];
$cognome = $valore["customer_last_name"];
$card = $valore["card_number"];
$saldo = $valore["customer_balance"];
echo "<tr>";
echo "<td>".$rank."</td>";
echo "<td>".$nome."</td>";
echo "<td>".$cognome."</td>";
echo "<td>".$card."</td>";
echo "<td>".$saldo."</td>";
echo "</tr>";
}
Fino a qui nulla di strano.
Il problema è che l'array $member_card è un array "sporco", questo è quello che ottengo in output con un "pre":
Codice PHP:
Array
(
[0] => Array
(
[customer_rank] => 1
[card_number] => SimpleXMLElement Object
(
[0] => 5771463452941190
)
[customer_code] => SimpleXMLElement Object
(
[0] => 6086358390657090
)
[customer_first_name] => SimpleXMLElement Object
(
[0] => Stefano
)
[customer_last_name] => SimpleXMLElement Object
(
[0] => Palmisani
)
[customer_balance] => SimpleXMLElement Object
(
[0] => 54654
)
)
[1] => Array
(
[customer_rank] => 2
[card_number] => SimpleXMLElement Object
(
[0] => 8038157418941637
)
[customer_code] => SimpleXMLElement Object
(
[0] => 1803733416109664
)
[customer_first_name] => SimpleXMLElement Object
(
[0] => Emanuela
)
[customer_last_name] => SimpleXMLElement Object
(
[0] => Ciuffri
)
[customer_balance] => SimpleXMLElement Object
(
[0] => 564
)
)
Quei SimpleXMLElement mi creano grossi problemi nel caso successivamente debba ordinare, tagliare etc etc.
Ho pensato di tagliare la testa al toro creandomi un secondo array in questa maniera:
Codice PHP:
foreach (customerBalance() as $key=>$valore) {
$rank = $valore["customer_rank"];
$nome = $valore["customer_first_name"];
$cognome = $valore["customer_last_name"];
$card = $valore["card_number"];
$saldo = $valore["customer_balance"];
$nuovo = array(); // creo nuovo array
$nuovo[$i++]['nome'] = $nome;
Ma nel campo nome mi torna sempre quel SimpleXMLElement Object
(so anche che non è il modo più corretto, dovrei ciclare nel caso ma questo lo vedrei poi)
Quindi, ricapitolando, se faccio un echo di $nome vedo solo il nome appunto, se uso print_r e vedo effettivamente l'array ho di nuovo il SimpleXMLElement.
Chiedo per favore un aiuto o un consiglio per far si ad arrivare ad avere un array semplicissimo fatto magari cosi
Codice PHP:
Array (
[0] => Array (
[nome]=>mario
[cognome]=>rossi
)
[1] => Array (
[nome]=>giuseppe
)
)
Grazie in anticipo e spero di essere riuscito a spiegarmi