2

所以,这不是一个需要解决的问题,而是一个出于好奇和想要澄清的问题。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
}

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

最好的祝福。

4

1 回答 1

5

PHP 5.4 (2012-03-01) 及更高版本支持从函数调用中取消引用数组。

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

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

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

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

于 2013-10-06T18:53:37.563 回答