PHP:从XML字符串中提取数据并添加到数组中

时间:2014-05-01 09:43:30

标签: php xml arrays loops foreach

我有一个由SQL查询产生的XML字符串,如下所示(缩短)。 我的网站设置为从SQL获取此内容并且$ objRev-> reviews->国家/地区将为我提供XML中每个评论的国家/地区部分的内容。

国家/地区仅包含以逗号和空格分隔的文本(国家/地区名称)。

在下面的例子中,我的输入变量是:

var1 = "Austria, Belgium, Bulgaria, Croatia, Cyprus";
var2 = "Brazil, Sweden, United Kingdom";

预期产量:"奥地利,比利时,巴西,保加利亚,克罗地亚,塞浦路斯,瑞典,英国"

有人可以告诉我如何使用PHP将这些变量的内容组合在一个数组中并按字母顺序排序吗? 我在这里面临的挑战是,并不总是有两个变量,它也可以是一个或多个,因为这取决于审核日期是否与给定的输入相匹配,这里:2014-04-21 - 此指标为dateMatch = 'Yes'

<root>
  <reviews>
    <review>2014-04-21</review>
    <revLong>21 Apr 2014</revLong>
    <revShort>2014-04-21</revShort>
    <dayDiff>0</dayDiff>
    <revStatus>past</revStatus>
    <countries>Austria, Belgium, Bulgaria, Croatia, Cyprus</countries>
    <dateMatch>Yes</dateMatch>
    <countryMatch>Yes</countryMatch>
  </reviews>
  <reviews>
    <review>2014-04-21</review>
    <revLong>21 Apr 2014</revLong>
    <revShort>2014-04-21</revShort>
    <dayDiff>0</dayDiff>
    <revStatus>past</revStatus>
    <countries>Brazil, Sweden, United Kingdom</countries>
    <dateMatch>Yes</dateMatch>
    <countryMatch>No</countryMatch>
  </reviews>
</root>

非常感谢你提供任何帮助,蒂姆。

2 个答案:

答案 0 :(得分:1)

像这样简单的事情..使用simplexml_load_string()

$xml = simplexml_load_string($xml);
foreach ($xml->reviews as $child)
{
        $cnt[]=explode(',',$child->countries);
}
$arr = array_map('trim',call_user_func_array('array_merge',$cnt));
sort($arr);
echo implode(', ',$arr);

<强> OUTPUT :

Austria, Belgium, Brazil, Bulgaria, Croatia, Cyprus, Sweden, United Kingdom

Demonstration

答案 1 :(得分:1)

尝试使用array_merge,sort和array_unique函数:

$all = array_unique(sort(array_merge($var1, $var2)));