2011-07-29 56 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

對不起,對於我更新,可以更新運行代碼,因爲我仍然沒有迴應我需要的東西。謝謝。 –