【问题标题】:PHP: Combining data of multiple jsons to arrayPHP:将多个json的数据组合到数组中
【发布时间】:2017-04-29 12:06:49
【问题描述】:

我有以下数据(我还有很多)。

$item1 = '{"views":{"Greece":{"total":10},"Cyprus":{"total":23},"Bulgaria":{"total":1},"United States":{"total":53},"United Kingdom":{"total":11},"Spain":{"total":2},"India":{"total":1},"":{"total":1},"Finland":{"total":2},"France":{"total":2},"Sweden":{"total":1},"Germany":{"total":5},"Ireland":{"total":1},"Austria":{"total":2},"Switzerland":{"total":2},"Poland":{"total":1},"Mexico":{"total":1}},"clicks":{"Greece":{"total":310},"Bulgaria":{"total":1},"United Kingdom":{"total":4},"United States":{"total":3},"Cyprus":{"total":15},"Finland":{"total":1},"Germany":{"total":1},"Ireland":{"total":1},"Spain":{"total":1},"Poland":{"total":1}},"leads":{"Greece":{"total":9}}}';

$item2 = '{"views":{"Greece":{"total":15},"Cyprus":{"total":1},"Bulgaria":{"total":1},"United States":{"total":53},"United Kingdom":{"total":11},"Spain":{"total":2},"India":{"total":1},"":{"total":1},"Finland":{"total":2},"France":{"total":2},"Sweden":{"total":1},"Germany":{"total":5},"Ireland":{"total":1},"Austria":{"total":2},"Switzerland":{"total":2},"Poland":{"total":1},"Mexico":{"total":1}},"clicks":{"Greece":{"total":310},"Bulgaria":{"total":1},"United Kingdom":{"total":4},"United States":{"total":3},"Cyprus":{"total":15},"Finland":{"total":1},"Germany":{"total":1},"Ireland":{"total":1},"Spain":{"total":1},"Poland":{"total":1}},"leads":{"Greece":{"total":9}}}';

最初我创建了一个循环,这样我就可以遍历那些(在我的示例中我只展示了 2 个)

for ( $x = 1; $x <= 2; $x++ ) {

$theitem = 'item' . $x;
$countries = json_decode( $$theitem, true );


$keys = array_keys( $countries[ 'views' ] );
$arraySize = count( $countries[ 'views' ] );


for ( $i = 0; $i < $arraySize; $i++ ) {

    if ( $keys[ $i ] == '' ) {
        echo "Empty: ";
    } else {
        echo $keys[ $i ] . ": ";
    }


    echo $countries[ 'views' ][ $keys[ $i ] ][ 'total' ];
    echo "<br>";

    // 

}
}

我在循环中需要做的事情如下:

1) 创建一个新数组并添加 Country + Total Number

2)如果数组中已经存在国家,只需将总数添加到已经存在的项目中)

3) 最后,我将拥有 1 个数组,其中仅包含每个不同国家/地区的总视图。

我需要一些帮助,有人可以帮忙吗:)

【问题讨论】:

    标签: php arrays array-merge array-push


    【解决方案1】:

    这里我们使用简单的foreach 循环和function,它将值添加到结果数组中。

    Try this code snippet here

    <?php
    
    ini_set('display_errors', 1);
    $item1 = '{"views":{"Greece":{"total":10},"Cyprus":{"total":23},"Bulgaria":{"total":1},"United States":{"total":53},"United Kingdom":{"total":11},"Spain":{"total":2},"India":{"total":1},"":{"total":1},"Finland":{"total":2},"France":{"total":2},"Sweden":{"total":1},"Germany":{"total":5},"Ireland":{"total":1},"Austria":{"total":2},"Switzerland":{"total":2},"Poland":{"total":1},"Mexico":{"total":1}},"clicks":{"Greece":{"total":310},"Bulgaria":{"total":1},"United Kingdom":{"total":4},"United States":{"total":3},"Cyprus":{"total":15},"Finland":{"total":1},"Germany":{"total":1},"Ireland":{"total":1},"Spain":{"total":1},"Poland":{"total":1}},"leads":{"Greece":{"total":9}}}';
    
    $item2 = '{"views":{"Greece":{"total":15},"Cyprus":{"total":1},"Bulgaria":{"total":1},"United States":{"total":53},"United Kingdom":{"total":11},"Spain":{"total":2},"India":{"total":1},"":{"total":1},"Finland":{"total":2},"France":{"total":2},"Sweden":{"total":1},"Germany":{"total":5},"Ireland":{"total":1},"Austria":{"total":2},"Switzerland":{"total":2},"Poland":{"total":1},"Mexico":{"total":1}},"clicks":{"Greece":{"total":310},"Bulgaria":{"total":1},"United Kingdom":{"total":4},"United States":{"total":3},"Cyprus":{"total":15},"Finland":{"total":1},"Germany":{"total":1},"Ireland":{"total":1},"Spain":{"total":1},"Poland":{"total":1}},"leads":{"Greece":{"total":9}}}';
    
    
    $result=array();
    getCount(json_decode($item1,true));
    getCount(json_decode($item2,true));
    print_r($result);
    function getCount($array1)
    {
        global $result;
        foreach($array1 as $key => $value)
        {
            foreach($value as $country => $data)
            {
                if(!isset($result[$country]))
                {
                    $result[$country]=$data["total"];
                }
                else
                {
                    $result[$country]+=$data["total"];
                }
            }
        }
    }
    

    【讨论】:

    • 非常感谢 :) :) 你让它看起来很简单 :) 你摇滚!
    猜你喜欢
    • 1970-01-01
    • 2019-03-14
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 2020-02-29
    相关资源
    最近更新 更多