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 個の個別の連想配列であり、何らかの理由で空白になっている最後のキーを除いて、すべてのキーが同じです。または別の関数を使用して、これらの個別の配列を 1 つの大きな配列にマージしてarray_merge()、「Rain Fog/Mist」という最後から 2 番目の値を返すことができるようにします。

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 に答える