“相同”语法,使用mysqli fetch_assoc()的结果不同?

时间:2013-10-06 18:49:49

标签: php mysql mysqli

所以,这不是需要解决的问题,而是出于好奇和缺乏澄清的问题。 A正在努力使用一块php / mysqli,在调试和拆分代码时,我发现我的代码工作正常,而不是我写的方式。

初始代码(不工作)

$result = $mysqli -> query("SELECT nick FROM userdata WHERE id=".$_SESSION['uid']);
// ... error checking here ...
for($i = $result -> num_rows - 1; $i >= 0; $i--){
    $result -> data_seek($i);
    $nick = ($result -> fetch_assoc())['nick']; // crash
}

最终代码(工作)

$result = $mysqli -> query("SELECT nick FROM userdata WHERE id=".$_SESSION['uid']);
// ... error checking here ...
for($i = $result -> num_rows - 1; $i >= 0; $i--){
    $result -> data_seek($i);
    $row = $result -> fetch_assoc(); // working
    $nick = $row['nick']; // working
}

那么,任何人都可以告诉我为什么第一个代码只是为我打破了吗?

最好的问候。

1 个答案:

答案 0 :(得分:5)

PHP 5.4(2012-03-01)及更高版本支持函数调用中的数组解除引用。

请参阅http://php.net/manual/en/language.types.array.php

  

从PHP 5.4开始,可以直接对函数或方法调用的结果进行数组取消引用。之前只能使用临时变量。

     

从PHP 5.5开始,可以对数组取消引用数组文字。

然后它显示了示例。请参阅该页面上的示例#7