エラー メッセージ「厳密な標準: 参照によって渡される変数のみが必要です」
array_shift() を使用すると、厳密な標準が報告される場合があります渡された引数が関数呼び出しの結果である場合に警告が表示されます。常に警告がトリガーされるわけではないため、この動作は矛盾しているように見えます。
次のコードを考えてみましょう:
$el = array_shift($instance->find(..))
この例では、find() メソッドが次のとおりであるため、警告が生成されます。変数ではありません。ただし、次のコードでは警告が生成されません:
function get_arr(){ return array(1, 2); } $el = array_shift(get_arr());
この動作を理解するために、別のコード スニペットを分析してみましょう:
error_reporting(E_STRICT); class test { function test_arr(&$a) { var_dump($a); } function get_arr() { return array(1, 2); } } $t = new test; $t->test_arr($t->get_arr());
このコードは、厳格な標準の警告を生成します。 $t->get_arr() メソッドは変数ではないため、参照によって渡されます。メソッドは配列値を返すため、この動作は直感に反します。
厳密モードでこのエラーを回避するには、メソッドのシグネチャを変更して参照の使用を避けるか、中間変数を使用します:
function test_arr($a) { var_dump($a); } $inter = get_arr(); $el = array_shift($inter);
以上が`array_shift()` が「厳格な標準: 変数のみが参照によって渡されるべきである」をトリガーするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。