麻烦解答一下

jellday 2008-09-24 04:29:22

$xml = simplexml_load_file('http://feeds.bbc.co.uk/weather/feeds/rss/5day/id/2315.xml');
$f=array();
foreach( $xml->channel->item as $item )
{
$arr = (array)$item;
$params = array();
//title
if(preg_match( '/^[^:]+:([^,]+)/is',$arr['title'],$tmp ) )
$params['Title'] = $tmp[1];

//description
$strs = explode( ',',$arr['description'] );
foreach( $strs as $v )
{
$tmp = explode( ': ',$v );
//$params[trim($tmp[0])]=$tmp[1];
$k = trim($tmp[0]); $params[$k] = ( $k=='Max Temp' || $k=='Min Temp' )?(int) $tmp[1]:$tmp[1];
}
//pubdate
$params['pubDate'] = $arr['pubDate'];

// echo '<pre>'; print_r( $params ); echo '</pre>';
$f[$key]=$params;
$key++;
}
echo '<pre>'; print_r($f); echo '</pre>';
echo $f[1]["Humidity"];
echo $f[2]["Humidity"];
echo $f[0]["Min Temp"];


$f数组结构:
Array
(
[] => Array
(
[Title] => sunny intervals
[Max Temp] => 17
[Min Temp] => 11
[Wind Direction] => E
[Wind Speed] => 8mph
[Visibility] => moderate
[Pressure] => 1031mb
[Humidity] => 68%
[UV risk] => low
[Sunrise] => 07:06BST
[Sunset] => 19:14BST
[pubDate] => Wed, 24 Sep 2008 05:40:22 +0000
)

[1] => Array
(
[Title] => sunny intervals
[Max Temp] => 16
[Min Temp] => 8
[Wind Direction] => SE
[Wind Speed] => 5mph
[Visibility] => moderate
[Pressure] => 1035mb
[Humidity] => 80%
[UV risk] => low
[Sunrise] => 07:08BST
[Sunset] => 19:11BST
[pubDate] => Wed, 24 Sep 2008 05:40:22 +0000
)

[2] => Array
(
[Title] => sunny intervals
[Max Temp] => 16
[Min Temp] => 7
[Wind Direction] => S
[Wind Speed] => 10mph
[Visibility] => very poor
[Pressure] => 1034mb
[Humidity] => 79%
[UV risk] => low
[Sunrise] => 07:10BST
[Sunset] => 19:09BST
[pubDate] => Wed, 24 Sep 2008 05:40:22 +0000
)

)


第一,本人是新手,上面的代码是另一位热心人提供的。因为想要存入3个数组,不知道“$f[$key]=$params; $key++;”这段代码是否正确。
第二,请问如何调用$f[]这个数组的变量? $f[]["Title"]是不行的。
...全文
119 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
foolbirdflyfirst 2008-09-24
  • 打赏
  • 举报
回复

$xml = simplexml_load_file('http://feeds.bbc.co.uk/weather/feeds/rss/5day/id/2315.xml');
$f=array();
//================
$key = 0;//初始化变量
//================
foreach( $xml->channel->item as $item )
{
$arr = (array)$item;
$params = array();
//title
if(preg_match( '/^[^:]+:([^,]+)/is',$arr['title'],$tmp ) )
$params['Title'] = $tmp[1];

//description
$strs = explode( ',',$arr['description'] );
foreach( $strs as $v )
{
$tmp = explode( ': ',$v );
//$params[trim($tmp[0])]=$tmp[1];
$k = trim($tmp[0]); $params[$k] = ( $k=='Max Temp' || $k=='Min Temp' )?(int) $tmp[1]:$tmp[1];
}
//pubdate
$params['pubDate'] = $arr['pubDate'];

// echo '<pre>'; print_r( $params ); echo '</pre>';
$f[$key]=$params;
$key++;
}
echo '<pre>'; print_r($f); echo '</pre>';
echo $f[1]["Humidity"];
echo $f[2]["Humidity"];
echo $f[0]["Min Temp"];


程序猿之殇 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 jellday 的帖子:]
第二,请问如何调用$f[]这个数组的变量? $f[]["Title"]是不行的。
[/Quote]
访问变量要指明索引的.
可以这样访问$f[0]['Title'],$f[1]['Title']

至于第一个问题,不太明白楼主的意思

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧