Php stdClass对象到html列表


Php stdClass Object to html list

有人知道怎么做吗?

我将下面的代码存储在一个变量中,并希望以不同的方式进行响应,例如:

  • 按国家划分的价值总和
  • 按城市划分的价值总和
  • 各州价值总和

类似于:

国家a:220
国家b:80
country-c:70

国家a:220
状态b:80
state-c:70

城市a:220
城市b:80
city-c:70

 stdClass Object
(
    [city-a, state-a, country-a] => 100
    [city-a, state-a, country-a] => 120
    [city-b, state-b, country-b] => 80
    [city-c, state-c, country-c] => 70
)

感谢你的帮助!

如果您不理解代码或需要其他函数的帮助,请告诉我。我还缩短了json代码。您可能会在类中实现更多的函数,并为自己创建一个nive FB统计接口。

//编辑:好的,我为您创建了一个小的API接口。它包含一个include文件、一个用法示例和两个json文件示例。请按以下方式命名文件,并将它们全部放在同一文件夹中。

index.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Your title</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
//include files
include 'Stats.php';
//create an object of Stats
$stats = new Stats();
//parse any number of json files
$stats->parseJson("json1.txt");
$stats->parseJson("json2.txt");
//call the functions
print "<h1>var_dump of the data</h1>";
print '<pre>' . print_r($stats->getList(), true) . '</pre>';
print "<h1>By Country</h1>";
print "Austria:".$stats->getSumByCountry("Austria")."<br />";
print "Germany:".$stats->getSumByCountry("Germany")."<br />";
print "USA:".$stats->getSumByCountry("USA")."<br />";
print "<h1>By State</h1>";
print "Tirol:".$stats->getSumByState("Tirol")."<br />";
print "Bayern:".$stats->getSumByState("Bayern")."<br />";
print "Massachusetts:".$stats->getSumByState("Massachusetts")."<br />";
print "<h1>By City</h1>";
print "Austria:".$stats->getSumByCity("Imst")."<br />";
print "Berlin:".$stats->getSumByCity("Berlin")."<br />";
print "Los Angeles:".$stats->getSumByCity("Los Angeles")."<br />";


?>
</body>
</html>

Stats.hp:

<?php
class Stats{
    private $cities;
    public function addCity($city){
        $this->cities[]=$city;
    }

    public function parseJson($jsonFile){
        $jsonData = file_get_contents($jsonFile);
        if($jsonData == null || $jsonData==""){
            die("Error: failed to load $jsonFile");
        }
        $object = json_decode($jsonData);
        //naviagte through the object to the data we want to have
        $data = $object->data;
        $temp_item = $data[0];
        $temp_value = $temp_item->values;
        $temp_item2 = $temp_value[0];
        $value = $temp_item2->value;
        //now create an entity of City for each entry and put it in the list of this class
        foreach ($value as  $key=> $item){
            $placeArray = explode(",",$key);
            $city = trim($placeArray[0]);
            $state = trim($placeArray[1]);
            $country = trim($placeArray[2]);
            $sum = $item;
            $this->addCity(new City($sum, $city, $state, $country));
        }
    }
    public function getSumByCity($name){
        $sum = 0;
        foreach ($this->cities as $city){
            if(strcmp($city->name,$name) == 0){
                $sum += $city->sum;
            }
        }
        return $sum;
    }
    public function getSumByState($state){
        $sum = 0;
        foreach ($this->cities as $city){
            echo "";
            if(strcmp($city->state,$state) == 0){
                $sum += $city->sum;
            }
        }
        return $sum;
    }
    public function getSumByCountry($country){
        $sum = 0;
        foreach ($this->cities as $city){
            if(strcmp($city->country,$country) == 0){
                $sum += $city->sum;
            }
        }
        return $sum;
    }
    public function getList(){
        return $this->cities;
    }
}
class City{
    public $sum, $name, $state, $country;
    function __Construct($sum, $name, $state, $country){
        $this->name = $name;
        $this->sum = $sum;
        $this->state = $state;
        $this->country = $country;
    }
}
?>

json1.txt

{"data":[
    {"id":"SOMEID/insights/page_fans_city/lifetime",
     "name":"page_fans_city",
     "period":"lifetime",
     "values":[
        {"value":
            {"Wattens, Tirol, Austria":160,
             "Imst, Tirol, Austria":123,
             "Zirl, Tirol, Austria":117},
         "end_time":""}],
     "title":"",
     "description":""}],
 "paging":
    {"previous":"",
     "next":""}
}

json2.txt:

{"data":[
    {"id":"SOMEID/insights/page_fans_city/lifetime",
     "name":"page_fans_city",
     "period":"lifetime",
     "values":[
        {"value":
            {"Boston, Massachusetts, USA":199,
             "Los Angeles, California, USA":55},
         "end_time":""}],
     "title":"",
     "description":""}],
 "paging":
    {"previous":"",
     "next":""}
}