如何在同一级别上使用不同的键解析JSON数组

时间:2014-10-15 23:36:02

标签: php arrays json

我有阵列,我需要得到数量*价格的总和。但是第三级的数组键是不同的。

我使用这个PHP代码,但我只能拿价格&第一项的数量[' 506-p1-8_p2-_p3 - ']

$quantity = $elements['1af7e792-bcff-4a6c-9bdb-dd5023b0251a']['items']['506-p1-8_p2-_p3-'][quantity];
$price = $elements['1af7e792-bcff-4a6c-9bdb-dd5023b0251a']['items']['506-p1-8_p2-_p3-'][price];
$summ = $price*$quantity;

如何解析所有级别以获得Summ =(价格*数量)
感谢所有能帮助我的人

Array
(
    [1af7e792-bcff-4a6c-9bdb-dd5023b0251a] => Array
        (
            [is_advance] => 1
            [items] => Array
                (
                    [506-p1-8_p2-_p3-] => Array
                        (
                            [hash] => 506-p1-8_p2-_p3-
                            [sku] => 501
                            [itemId] => 506
                            [quantity] => 6
                            [price] => 80.75
                            [currency] => UAH
                            [priceDesc] => 
                            [priceParams] => Array
                                (
                                    [u0420u0430u0437u043cu0435u0440] => 8
                                )
                            [name] => qwerty
                        )
                    [498-p1-6_p2-_p3-] => Array
                        (
                            [hash] => 498-p1-6_p2-_p3-
                            [sku] => 498
                            [itemId] => 498
                            [quantity] => 5
                            [price] => 500
                            [currency] => UAH
                            [priceDesc] => 
                            [priceParams] => Array
                                (
                                    [u0420u0430u0437u043cu0435u0440] => 6
                                )
                            [name] => qwerty
                        )
                )
        )
)

2 个答案:

答案 0 :(得分:0)

很难说首先如何生成数组。因此,仅仅关闭您发布的代码,这应该总结数组中包含的每个项目的总数。

$items = $elements['1af7e792-bcff-4a6c-9bdb-dd5023b0251a']['items'];
$sum = 0;
foreach($items as $item) {
    $sum += $item['quantity'] * $item['price'];
}

答案 1 :(得分:0)

从灵活性的角度来看,您希望代码尽可能便携。我认为您的ID不会始终为1af7e792-bcff-4a6c-9bdb-dd5023b0251a,因此您需要循环查看返回的数据。 I don't know how you get the data, that's up to you. 功能

所以像这样,应该收集你需要的数据并创建一个数组:

$d = array();
foreach ($data as $id => $item) {
    foreach ($item as $key => $values) {
        $d[$id][$key]['sum'] = $values['price'] * $values['quantity'];
    }
}

print_r($d);

注意: 以上代码未经测试

相关问题