如何过滤php对象数组

时间:2014-11-20 19:31:18

标签: php arrays json soap

我有一个从SOAP请求返回给我的PHP Object数组。我需要过滤除空气质量指数和AqiDateTime对象和值之外的所有其他数据。所有其他数据都不需要,实际上会产生一个问题,因为我需要将它放在一个数组中,我正在为图形插件提供数据。数组是插件的值。对不起,如果这是一个简单的问题,我是做网络项目的IT人员。

以下是从var_dump

中看到的对象示例
object(stdClass)#2 (1) {
["CalculateSiteAQIByNaturalKeyJsonResult"]=>
object(stdClass)#3 (17) {
["AirQualityIndex"]=>
int(23)
["AqiDateTime"]=>
string(19) "2014-11-20T10:00:00"
["AqsUnitDescription"]=>
string(29) "Micrograms/cubic meter (25 C)"
["CategoryColorInteger"]=>
int(-16718848)
["CategoryDescription"]=>
string(4) "Good"
["FontColorInteger"]=>
int(-16777216)
["HealthAdvisory"]=>
string(4) "None"
["HealthEffects"]=>
string(4) "None"
["ParameterConcentration"]=>
float(24.67)
["ResponsibleAQIProgramID"]=>
string(36) "2d26a957-42f9-dd11-9b87-001e8c005352"
["ResponsibleAQIProgramName"]=>
string(4) "PM10"
["ResponsibleParameterID"]=>
string(36) "b8ab4bd9-89b0-4cdc-ba8a-3af9c038e5ba"
["ResponsibleParameterName"]=>
string(15) "PM10_(Standard)"
["SensitiveGroups"]=>
string(59) "People with respiratory disease are the group most at risk."
["SiteName"]=>
string(7) "BARSTOW"
["SourceSiteID"]=>
string(36) "3d104bd9-a9b7-e011-b9b9-444553544200"
["Unit"]=>
string(5) "UG/M3"
 }
}

2 个答案:

答案 0 :(得分:0)

$newArray = array(
     'AirQualityIndex' => $obj->CalculateSiteAQIByNaturalKeyJsonResult->AirQualityIndex,
     'AqiDateTime' => $obj->CalculateSiteAQIByNaturalKeyJsonResult->AqiDateTime);

其中$obj是从SOAP调用返回的对象,$ newArray是要添加到插件的新数组。

->是PHP中的对象属性访问语法。

在这种情况下,父对象上的CalculateSiteAQIByNaturalKeyJsonResult属性包含另一个对象,并且属性访问方法是链接的。例如

$obj->CalculateSiteAQIByNaturalKeyJsonResult->AirQualityIndex

给出空气质量指数值。

关联数组语法是访问属性的另一种方法。例如

$obj['CalculateSiteAQIByNaturalKeyJsonResult']['AirQualityIndex']

也将给出空气质量指数值。

arrray(KEY => VALUE)包装器构建新数组。

请参阅:http://php.net/manual/en/sdo.sample.getset.php

答案 1 :(得分:0)

如果对象名称为$my_object。您可以将所需信息存储在关联数组中,如下所示:

$air_array = array();

$air_array['AirQualityIndex'] = $my_object->AirQualityIndex;
$air_array['AqiDateTime'] = $my_object->AqiDateTime;

然后$air_array会提供您想要的信息。

如果您需要将信息作为对象,可以将其转换为如下所示:

$air_object = (object) $air_array;