ホームページ > バックエンド開発 > PHPチュートリアル > `array_shift()` が「厳格な標準: 変数のみが参照によって渡されるべきである」をトリガーするのはなぜですか?

`array_shift()` が「厳格な標準: 変数のみが参照によって渡されるべきである」をトリガーするのはなぜですか?

Susan Sarandon
リリース: 2025-01-03 17:27:43
オリジナル
892 人が閲覧しました

Why Does `array_shift()` Trigger

エラー メッセージ「厳密な標準: 参照によって渡される変数のみが必要です」

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート