0

print_r($element_attrs);返回从 xml 文件中收集的以下数组。

Array ( [WEATHER-SUMMARY] => Thunderstorms ) 
Array ( [WEATHER-SUMMARY] => Thunderstorms Likely ) 
Array ( [WEATHER-SUMMARY] => Chance Thunderstorms ) 
Array ( [WEATHER-SUMMARY] => Mostly Cloudy ) 
Array ( [WEATHER-SUMMARY] => Mostly Sunny ) 
Array ( [WEATHER-SUMMARY] => Mostly Clear ) 
Array ( [WEATHER-SUMMARY] => Sunny ) 
Array ( [WEATHER-SUMMARY] => Mostly Clear ) 
Array ( [WEATHER-SUMMARY] => Sunny ) 
Array ( [WEATHER-SUMMARY] => Partly Cloudy ) 
Array ( [WEATHER-SUMMARY] => Mostly Sunny ) 
Array ( [WEATHER-SUMMARY] => Partly Cloudy ) 
Array ( [WEATHER-SUMMARY] => Mostly Sunny ) 
Array ( [WEATHER-SUMMARY] => Rain Fog/Mist ) 
Array ( )

现在它们是 16 个独立的关联数组,其中所有的键都是相同的,除了最后一个由于某种原因是空白的。我想使用array_merge()或另一个函数将这些单独的数组合并到一个大数组中,以便我可以返回倒数第二个值“雨雾/雾”

现在当我这样做时,print_r(array_merge($element_attrs));我得到:

Array ( [WEATHER-SUMMARY] => Thunderstorms ) 
Array ( [WEATHER-SUMMARY] => Thunderstorms Likely ) 
Array ( [WEATHER-SUMMARY] => Chance Thunderstorms ) 
Array ( [WEATHER-SUMMARY] => Mostly Cloudy ) 
Array ( [WEATHER-SUMMARY] => Mostly Sunny ) 
Array ( [WEATHER-SUMMARY] => Mostly Clear ) 
Array ( [WEATHER-SUMMARY] => Sunny ) 
Array ( [WEATHER-SUMMARY] => Mostly Clear ) 
Array ( [WEATHER-SUMMARY] => Sunny ) 
Array ( [WEATHER-SUMMARY] => Partly Cloudy ) 
Array ( [WEATHER-SUMMARY] => Mostly Sunny ) 
Array ( [WEATHER-SUMMARY] => Partly Cloudy ) 
Array ( [WEATHER-SUMMARY] => Mostly Sunny ) 
Array ( [WEATHER-SUMMARY] => Rain Fog/Mist ) 
Array ( ) 
4

4 回答 4

0

假设您有一个包含 $element_attrs 数组的所有值的数组,这应该可以工作。

function getLastWeatherSummary($arr){
    $ret = array();
    foreach($arr as $summary){
       if(array_key_exists("WEATHER-SUMMARY", $summary)){
          $ret[] = $summary["WEATHER-SUMMARY"];
       }
    }
    // if you want the whole array 
    // return $ret

    // if you only care about the last one
    return array_pop($ret);
}

如果您在分配每个 $element_attrs 值时只关心最后一个,您可以这样做

// loop through elements and set the value of $element_attrs
if (array_key_exists("WEATHER-SUMMARY", $element_attrs)){ 
   $last_summary = $element_attrs["WEATHER-SUMMARY"];
}

在循环之后,您应该得到一个名为 $last_summary 的变量,其中包含最后定义的值。

于 2013-05-09T17:01:14.293 回答
0

示例数据:

$array = array(
    array('WEATHER-SUMMARY' => 'Thunderstorms'),
    array('WEATHER-SUMMARY' => 'Thunderstorms Likely'),
    array('WEATHER-SUMMARY' => 'Chance Thunderstorms'),
    array('WEATHER-SUMMARY' => 'Mostly Cloudy'),
    array('WEATHER-SUMMARY' => 'Mostly Sunny'),
    array() 
);

使用array_filter()array_map()

$flatArray = array_filter(array_map(function($a) {
    if (!empty($a['WEATHER-SUMMARY'])) {
        return $a['WEATHER-SUMMARY'];
    }
}, $array));

使用foreach()循环:

$flatArray = array();
foreach ($array as $a) {
    if (!empty($a['WEATHER-SUMMARY'])) {
        $flatArray[] = $a['WEATHER-SUMMARY'];
    }
}

然后,您可以使用array_pop()来获取最后一个数组条目:

echo array_pop($flatArray); // 'Mostly Sunny'    
于 2013-05-09T17:06:33.903 回答
0

首先,您需要收集 $element_attrs 的所有不同值。因此,在您进入分配值的循环之前,请创建一个空数组。

$weatherSummaries = array();

while 在循环遍历元素之后立即循环分配 $element_attrs 变量的循环中,将与 $element_attrs 的 WEATHER-SUMMARY 键关联的值添加到 weatherSummaries 数组(仅当它不为空时)

if (array_key_exists("WEATHER-SUMMARY", $element_attrs)){
    $weatherSummaries[] =  $element_attrs["WEATHER-SUMMARY"];
}

现在循环存在后,您应该有一个包含每个数组的 WEATHER-SUMMARY 元素的数组 ($weatherSummaries)。

您可以通过参考获得最后一个

$weatherSummaries[count($weatherSummaries) -1)];
于 2013-05-09T20:38:22.147 回答
-1

它有点乱,但我最终使用 css 使除了每组中的最后一个不可见之外的所有这些。

于 2013-05-17T20:12:44.583 回答