2016-09-02 14 views
1

私はwhileループを使用して配列の束をループしようとしました。 このように動作しません。どのように動作しますか?PHPループwhile多次元配列

while($x<$sQuery($SERVER)['number']) 
    { 
     $o = $o . "<Server> 
     <Name>".$sQuery($SERVER)[$x]['name']."</Name> 
     <DNS>".$sQuery($SERVER)[$x]['ip']."</DNS> 
    <Lat>0</Lat> 
     <Long>0</Long> 
     <Usage>-1</Usage> 
     <RankRequired>0</RankRequired> 
    </Server>" 
     x++; 
    } 
} 

エラーは、この行(秒)である:

 <Name>".$sQuery($SERVER)[$x]['name']."</Name> 
     <DNS>".$sQuery($SERVER)[$x]['ip']."</DNS> 

[$x]が許可されていないと私は、どのように私はそれらをループすることができます任意のアイデアを知りませんか?

+1

のx ++; '$ x ++ 'である必要があります;また、'; 'が' –

+0

を逃しましたの後のセミコロンはどこですか? " また、" x ++ "とは何ですか?おそらく$ x ++;? –

+0

$ sQuery($ SERVER )これは、その関数を何度も何度も繰り返し実行しています。ループの前に一度やり直して静的に使用してください。 –

答えて

1

私は自分の質問に答えています(ちょっと)。 コメントは私を助けました。 私はプログラミングに疲れているので、私は寝るべきです。

function ListServersXML($SERVER) 
{ 
    $x = 0; 
    $o = ""; 
    $s = sQuery($SERVER); 
    while($x<$s['number']) 
    { 
     $o = $o . "<Server> 
     <Name>".$s[$x]['name']."</Name> 
     <DNS>".$s[$x]['ip']."</DNS> 
    <Lat>0</Lat> 
     <Long>0</Long> 
     <Usage>-1</Usage> 
     <RankRequired>0</RankRequired> 
    </Server>"; 
     $x++; 
    } 
    return $o; 
} 

(ところでこれは私の完全な機能である)

+0

フルコードを提供するのはあなたの責任です。コードを隠して質問に答えるのは良い方法ではありません他の人がコメントと答えであなたの問題を解決している間に) –

+1

なぜforeachを使用したくないのですか? – Barmar

+0

@Barmar私はすでに言ったように、彼はelemenを持っています彼は必要とし、 '[" number "]'要素は同じレベルにあります。あなたは 'foreach'で行くことができますが、' '数字キー' 'を無視しなければなりません。 –

2

私はそれをこのように書き換えます: -

$s = $sQuery($SERVER); 

for($i=0; $i<$s['number']; $i++) 
{ 
    $o .= "<Server><Name>".$s[$i]['name']."</Name> 
      <DNS>".$s[$i]['ip']."</DNS><Lat>0</Lat><Long>0</Long><Usage>-1</Usage> 
      <RankRequired>0</RankRequired></Server>"; 
} 
+1

なぜ 'foreach'を使わないのですか? – Barmar

+0

@Barmar彼は必要な要素と '[" number "]'要素が同じレベルにあるので。あなたは 'foreach'で行くことができますが、' '数字キー' 'を無視しなければなりません。 –