2013-10-06 48 views
2

因此,这不是一个比需要解决的问题,而是出于好奇和澄清的问题。 A正在苦苦寻找一块php/mysqli,并在调试和分割代码时发现我的代码正在工作,而不是我写它的方式。“相同”的语法,不同的结果使用mysqli fetch_assoc()?

初始代码(不工作)

$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 
} 

所以,任何人都可以开导我,为什么第一个代码只是打破了我吗?

此致敬礼。

+3

PHP的编译器无法处理第一种情况下的语法,除了最近的版本。请参阅http://stackoverflow.com/questions/1459377/access-array-returned-by-a-function-in-php –

回答

5

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

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

作为PHP 5.4的能够阵列取消引用函数或方法调用直接的结果。之前只能使用临时变量。

从PHP 5.5开始,可以对数组进行数组解引用。

然后显示示例。请参阅示例#7

+0

谢谢,这回答了我的问题。我会尽快回答。 – Anton