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 に答える