2016-03-04 37 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个项目。 –