2016-03-04 43 views
0

我已經通過堆棧的答案搜查,但似乎我無法找到下面的代碼的解決方案:變量數組中,而

$servers = array(); 
while($row = mysql_fetch_array($result)) 
{ 
    $servers[] = $row['name'] => array('ip' => $row['ip'],'port' => $row['port'],'info' => $row['info'],'purpose' => $row['purpose']), 
} 

我想要實現的是獲取所有的結果,但我收到以下錯誤:

syntax error, unexpected '=>' (T_DOUBLE_ARROW).

使其像這樣只能得到最後一個項目:

while($row = mysql_fetch_array($result)) { 
$servers = array(
    $row['name'] => array('ip' => $row['ip'],'port' => $row['port'],'info' => $row['info'],'purpose' => $row['purpose']), 
    ); 
} 

這就是說,$服務器是在while循環,因此使它只索引最後一個項目。我不知道是什麼原因導致的意外=>:/

+2

請[停止使用'mysql_ *'函數](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。 [這些擴展](http://php.net/manual/en/migration70.removed-exts-sapis.php)已在PHP 7中刪除。瞭解[編寫]​​(http://en.wikipedia.org/ wiki/Prepared_statement)語句[PDO](http://php.net/manual/en/pdo.prepared-statements.php)和[MySQLi](http://php.net/manual/en/mysqli.quickstart .prepared-statements.php)並考慮使用PDO,[這真的很簡單](http://jayblanchard.net/demystifying_php_pdo.html)。 –

回答

1

它看起來像你試圖做到這一點:

$servers = []; 
while($row = mysql_fetch_array($result)) { 
    $servers[$row['name']] = [ 
     'ip' => $row['ip'], 
     'port' => $row['port'], 
     'info' => $row['info'], 
     'purpose' => $row['purpose'] 
    ]; 
} 

這給你一個最後$servers陣列,通過服務器名索引,用細節陣列。

邊注:爲周杰倫評論,你真的不應該使用mysql功能不再是真正鼓勵你檢查出mysqliPDO功能來代替。

+0

看起來像$ servers = array();做了這份工作。 $ servers = [];仍然只是打電話給我。我注意到了Jay的評論,並會深入研究它。 –

+0

@MartinSpatovaliyski'$ servers = array()'和'$ servers = []'是完全一樣的東西。 '[]'只是'array()'的簡寫。 – jszobody

+0

不知道爲什麼它導致它只顯示1個項目。 –