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