PHP: уменьшить размеры массива в формате JSON - PullRequest
0 голосов
/ 23 февраля 2012
<?php
$xml = simplexml_load_file("test.XML");
$amount = array();
$temp = 0;

echo $xml->getName() . "</br>";

foreach ($xml->RECORD as $first_gen) {
    foreach ($first_gen->Inventory_Value_at_Cost as $second_gen){
        $temp = $second_gen;
        $amount[] = $temp;
    }
}
echo json_encode($amount, JSON_FORCE_OBJECT);
?>

Вывод

{"0": {"0": "34954.68"}, "1": {"0": "20544.20"}, "2": {"0": "102702,76"}, "3": { "0": "89018,95"}, "4": { "0": "42479,36"}, "5": { "0": "58479,60"}, "6": { "0": "47609,10"}, "7": { "0": "188230,86"}, "8": { "0": "80646,05"}, "9": { "0":" 11352.48 "}," 10 ": {" 0 ":" 4461.90 "}}

Может ли кто-нибудь помочь мне объяснить это как-то так

{34954.68,20544.20,102702.76 ... 4461.90}

Большое спасибо.

Ответы [ 3 ]

2 голосов
/ 23 февраля 2012

Прежде всего, не используйте JSON_FORCE_OBJECT, если вы пытаетесь получить простой массив.Попробуйте что-то вроде:

$xml = simplexml_load_file("test.XML");
$amount = array();
$temp = 0;

echo $xml->getName() . "</br>";

foreach ($xml->RECORD as $first_gen) {
    foreach ($first_gen->Inventory_Value_at_Cost as $second_gen){
        $temp = $second_gen;
        $amount[] = array_values($temp);
    }
}
echo json_encode($amount);
0 голосов
/ 23 февраля 2012

Роб прав, снимите JSON_FORCE_OBJECT

попробовать:

$amount[] = $second_gen[0]

и

echo json_encode($amount);
0 голосов
/ 23 февраля 2012

Вместо назначения всего массива, который возвращается в $ second_gen, замените следующий код:

...
$temp = $second_gen;
$amount[] = $temp;
...

на:

...
$amount[] = $second_gen[0];
...
...