PHP:以JSON格式减少数组维度

时间:2012-02-23 10:34:18

标签: php xml arrays simplexml

<?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 个答案:

答案 0 :(得分:2)

首先,如果您想要获得一个简单的数组,请不要使用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);

答案 1 :(得分:0)

不是分配$ second_gen中返回的整个数组,而是替换以下代码:

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

使用:

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

答案 2 :(得分:0)

Rob是正确的,取消JSON_FORCE_OBJECT

尝试:

$amount[] = $second_gen[0]

echo json_encode($amount);