循环php多维数组并提取特定数据

时间:2016-05-26 09:00:28

标签: php

我有一个多维数组,我需要从中获取一些数据,做一些简单的数学运算并在js图表上显示它们。 我唯一的问题是我无法从数组中获取数据。 这是阵列的外观:

object(stdClass) [211]
        public 'countries' =>
            array (size=30)
                0 =>
                  array (size=1)
                    0 =>
                      object(stdClass)[215]
                         public 'country' => string 'RO' (lenght=2)
                         public 'clicks'  => int 4

                    1 =>
                      object(stdClass)[215]
                         public 'country' => string 'RU' (lenght=2)
                         public 'clicks'  => int 1

                1 =>
                   array (size=1)
                     0 =>
                       object(stdClass)[215]
                          public 'country' => string 'RU' (lenght=2)
                          public 'clicks'  => int 4

                     1 =>
                       object(stdClass)[215]
                          public 'country' => string 'RO' (lenght=2)
                          public 'clicks'  => int 2

......等到29(有30天)所以每天都有来自不同国家的点击。 我需要做的是以这种格式从数组中提取数据:

name: ['RO', 'RU']
data: [6, 5]

我希望你明白我想做什么。 我不是专家,只是初学者,我无法解决这个问题。

编辑:最后,我需要说x国家在过去30天内有x次点击。 请注意,我不知道巫婆国家在阵列中,因为这是来自通过点击提供前10个国家/地区的API。 因此,在每一天都可能是一个前一天没有的国家,依此类推。

编辑2:根据我的经验,这就是我的尝试:

function getCountriesByClicks($data)
{
    $jsData = [];
    $clicks = [];
    $country = [];
    for ($x = 0; $x < sizeof($data->data[0]->data->countries); $x++) {
        foreach ($data->data[0]->data->countries[$x] as $value) {
            array_push($country, $value->country);
            array_push($clicks, $value->clicks);
        }

        $jsData[] = ['name' => $country, 'data' => $clicks];
    }
    return json_encode($jsData);
}

忽略json返回,只是在我的javascript图表中使用。

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

$name = array();
$data = array();
array_map(function($array){
    array_map(function($obj){
      $name[] = $obj->country;
      $data[] = $obj->clicks;
    },$array);
},$yourObject->countries);