2014-11-20 168 views
0

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

这里是对象的例子,因为它是被从的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" 
} 
} 

回答

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

+0

这是导致我下了正确的道路。我现在得到一个stdClass错误。 – GuitarGeek86 2014-11-20 22:01:14

+0

PHP注意:未定义的属性:stdClass :: $ AirQualityIndex – GuitarGeek86 2014-11-20 22:01:42

+0

#测试从AQI API获取JSON中的所有结果 - 使用的值是aqiDateTime,将其设置为PollTime变量。 $ result = $ client-> CalculateSiteAQIByNaturalKeyJson($ parameters); var_dump($ result); $ newArray = array('AirQualityIndex'=> $ result-> AirQualityIndex,'AqiDateTime'=> $ result-> AqiDateTime); – GuitarGeek86 2014-11-20 22:02:14

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;