所以,这不是需要解决的问题,而是出于好奇和缺乏澄清的问题.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)
所以,任何人都可以告诉我为什么第一个代码只是为我打破?
最好的祝福.
PHP 5.4(2012-03-01)及更高版本支持函数调用中的数组解除引用.
见http://php.net/manual/en/language.types.array.php
从PHP 5.4开始,可以直接对函数或方法调用的结果进行数组解除引用.之前只能使用临时变量.
从PHP 5.5开始,可以对数组取消引用数组文字.
然后它显示了示例.请参见该页面上的示例#7.