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

Ant*_*ton 2 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
}
Run Code Online (Sandbox Code Playgroud)

最终代码(工作)

$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
}
Run Code Online (Sandbox Code Playgroud)

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

最好的祝福.

Bil*_*win 5

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

http://php.net/manual/en/language.types.array.php

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

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

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