[英]How to filter a php object array
我有一个从SOAP请求返回的PHP对象数组。 我需要过滤除空气质量指数和AqiDateTime对象和值以外的所有其他数据。 不需要所有其他数据,并且实际上会产生问题,因为我需要将其放入为图形插件提供的数组中。 数组是去插件的值。 抱歉,如果这是一个简单的问题,我是从事Web项目的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"
}
}
$newArray = array(
'AirQualityIndex' => $obj->CalculateSiteAQIByNaturalKeyJsonResult->AirQualityIndex,
'AqiDateTime' => $obj->CalculateSiteAQIByNaturalKeyJsonResult->AqiDateTime);
其中$obj
是从SOAP调用返回的对象,而$ newArray是要馈送到插件的新数组。
->
是PHP中的对象属性访问语法。
在这种情况下,父对象上的CalculateSiteAQIByNaturalKeyJsonResult属性包含另一个对象,并且属性访问方法已链接在一起。 例如
$obj->CalculateSiteAQIByNaturalKeyJsonResult->AirQualityIndex
给出空气质量指数值。
关联数组语法是访问属性的另一种方法。 例如
$obj['CalculateSiteAQIByNaturalKeyJsonResult']['AirQualityIndex']
也将给出空气质量指数值。
arrray(KEY => VALUE)
包装器将构建新数组。
如果对象名称为$my_object
。 您可以将所需的信息存储在这样的关联数组中:
$air_array = array();
$air_array['AirQualityIndex'] = $my_object->AirQualityIndex;
$air_array['AqiDateTime'] = $my_object->AqiDateTime;
然后$air_array
具有您想要的信息。
如果您需要将信息作为对象,则可以将其强制转换为如下形式:
$air_object = (object) $air_array;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.