ホームページ > バックエンド開発 > PHPチュートリアル > array_shift() を使用するときに PHP が「厳密な標準: 変数のみ参照渡しする必要がある」を発行するのはなぜですか?

array_shift() を使用するときに PHP が「厳密な標準: 変数のみ参照渡しする必要がある」を発行するのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-20 07:39:11
オリジナル
655 人が閲覧しました

Why Does PHP Issue

PHP での参照渡しについて: 厳密な標準と Array_Shift()

PHP では、非変数値を参照によって渡すときに厳密な標準モードで警告が発行されることがあります。この一般的な例は、array_shift() 関数を使用する場合です。

警告はどのようなときに発生しますか?

「厳格な標準: 変数のみが参照によって渡される必要があります」という警告は、array_shift() のときに表示されます。 ) は、引数として渡される非変数値とともに使用されます。例:

$instance = new MyClass();
$el = array_shift($instance->find(...)); // Warning
ログイン後にコピー

対照的に、array_shift() が配列を含む変数で呼び出された場合、警告は生成されません:

function get_arr() {
    return [1, 2];
}
$el = array_shift(get_arr()); // No warning
ログイン後にコピー

非直感的な動作

array_shift() は配列値を返す関数であるため、この警告は混乱を招く可能性があります。ただし、厳密モードでは、PHP は array_shift() の戻り値を非変数と見なします。

警告の解決

厳密モードで警告を解決するには、次の 2 つのオプションがあります。

  1. メソッドのシグネチャを変更する: 配列を返すメソッドのシグネチャを変更します。参照の使用を避けるため。
  2. 中間変数を使用する: メソッドによって返された配列を array_shift() に渡す前に中間変数に割り当てます。

例:

// Modify Method Signature
function get_arr() {
    return [1, 2];
}
$instance = new MyClass();
$el = array_shift($instance->get_arr());

// Use Intermediate Variable
$el = array_shift($instance->get_arr() ?: []);
ログイン後にコピー

以上がarray_shift() を使用するときに PHP が「厳密な標準: 変数のみ参照渡しする必要がある」を発行するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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