2011-07-29 13 views
0

のtest.xml <num> >=9場合の対処方法PHPの解析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> 

shuffle項目をシャッフルし、<text>を印刷作りますか?

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

はアウトのように置く必要があります。

text1 text3 text5 OR text1 text5 text3 OR text3 text1 text5 ... //テキスト1テキスト3 text5 9よりも小さくない、そしてそれらを印刷し、彼らが通過

答えて

2

その位置ラドム作りますそれらを(結合)配列に追加します。

foreachループの後で、shuffle($array)はそれらをシャッフルし、通常どおり(echo $array[0].$array[1].$array[2])印刷します。

この商品をお求めの客様はこんな商品もお求めです。

EDIT:

$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

は '解除($配列[$キー] [ 'テキストを'])を追加;' 'foreach'に? –

+0

それをすべてエコーした後に?後で配列を設定解除することはできますが、非正規化されたユーザー入力でいくつかのことをしない限り、私は考える必要はありません。 –

+0

申し訳ありませんが、私にとっては新しいです。まだ私が必要とするものをエコーし​​ません。ありがとう。 –