2016-09-02 123 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++; 
    } 
} 

的錯誤是在這條線(S):

 <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他需要AND與同一級別的'[「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因爲有他需要的元素和'[「數字」]元素在同一層。你可以用'foreach'去,但是你必須忽略''數字''鍵,然後再增加一行。 –