日期:2011-06-29  浏览次数:20634 次

今天带来的是查询每日星座运势的功能,这个功能非常简单,在微信平台上输入星座名称加一个标识符(例如“+”号),后台程序匹配这个标识符调用相应的功能。
 
具体流程上:1.使用字符串分割函数explode(w3school)获取到星座名称。
 
2.将星座名称匹配成相应的星座编号。
 
3.将这个编号传递给相应的API。
 
4.接收API返回的xml格式的数据。
 
5.处理xml格式的数据。
 
6.生成结果。
 
其中我再制作过程中由于是初学者,在第五步费了些功夫。API返回的xml格式为
 
[html]  
<root>  
    <item>  
        <title>综合运势</title>  
        <rank>3</rank>  
        <value></value>  
    </item>  
    <item>  
        <title>爱情运势</title>  
        <rank>3</rank>  
        <value></value>  
    </item>  
    <item>  
        <title>工作状况</title>  
        <rank>2</rank>  
        <value></value>  
    </item>  
      ……  
    <item>2013-11-16</item>  
</root>  
 
 
首先我使用file_get_contents() 函数把API返回的数据文件读入一个字符串中。然后用simplexml_load_string() 函数把 XML 字符串载入对象中。然后再使用这个对象读取每个xml标签中的数据,但这里我遇到了一个问题,返回的xml格式的文件都是
[html] 
<item>  
           <title>……</title>  
           <rank>……<rank>  
           <value>……<value>  
</item>  
 
这种格式,这样我使用“对象”->item->title的方法只能读取到第一个item的数据,这里我最终使用的办法的使用
[php]  
foreach ($xml->item as $th) {  
  
           $content_title[$i] = $th->title;  
           $content_rank[$i] = $th->rank;  
           $content_value[$i] = $th->value;  
           $i++;  
       }  
 
对这个对象“$xml”实现遍历,并使用一个自增变量i把每一组的数据存储在数组中。
其中的foreach 语句用于循环遍历数组。
 
每进行一次循环,当前数组元素的值就会被赋值给 value 变量(数组指针会逐一地移动) - 以此类推。
语法
[php]  
foreach (array as value)  
{  
    code to be executed;  
}  
 
例子
下面的例子示范了一个循环,这个循环可以输出给定数组的值:
[php]  
<html>  
<body>  
  
<?php  
$arr=array("one", "two", "three");  
  
foreach ($arr as $value)  
{  
  echo "Value: " . $value . "<br />";  
}  
?>  
  
</body>  
</html>  
 
 
程序源代码如下:
 
[php]  
function xingzuo($key