2011-07-29 55 views
0

的test.xmlPHP解析XML化妆结果洗牌

<?xml version="1.0" encoding="UTF-8"?> 
<items> 
<item> 
    <id>1</id> 
    <num>10</num> 
    <text>text1</text> 
</item> 
<item> 
    <id>2</id> 
    <num>8</num> 
    <text>text2</text> 
</item> 
<item> 
    <id>3</id> 
    <num>17</num> 
    <text>text3</text> 
</item> 
<item> 
    <id>4</id> 
    <num>5</num> 
    <text>text4</text> 
</item> 
<item> 
    <id>5</id> 
    <num>9</num> 
    <text>text5</text> 
</item> 
</items> 

如何做,如果<num> >=9shuffle的项目和打印<text>

$xml = simplexml_load_file('test.xml'); 
foreach ($xml->item as $key=>$data){ 
    if(($data->num)>=9){ 
     ... 
    } 
} 

需要进行放像:

text1 text3 text5text1 text5 text3text3 text1 text5 ... // text1的文字3 text5不小于9,然后打印出来,使他们的位置拉多姆

回答

2

当他们通过,将它们添加到(关联)数组中。

在foreach循环之后,shuffle($array)会将它们洗牌并像往常一样打印它们(echo $array[0].$array[1].$array[2])。

这是你在找什么?

编辑:

$passedArray = array(); 

$xml = simplexml_load_file('test.xml'); 
foreach ($xml->item as $key=>$data){ 
    if(($data->num)>=9){ 
     $passedArray[] = $data->text; 
    } 
} 

shuffle($passedArray); 

然后:

foreach ($passedArray as $value) { 
    echo $value.' '; 
} 

这会留下拖空间。这是更好的:

$string = ''; 

foreach ($passedArray as $value) { 
    $string += $value.' '; 
} 

echo substr($string, 0, strlen($string)-1); 
+0

add'unset($ array [$ key] ['text']);'in'foreach'? –

+0

经过所有的回声后?之后您可以取消设置阵列,但除非您使用无用户输入做了一些事情,否则您并不需要我认为... – 2011-07-29 14:13:08

+0

对不起,对于我更新,可以更新运行代码,因为我仍然没有回应我需要的东西。谢谢。 –