PHP では、厳格な標準の警告「変数のみが参照によって渡されるべきである」がトリガーされます。関数またはメソッドへの参照によって非変数を渡そうとしたとき。
次のコードを考えてみましょう:
$el = array_shift($instance->find());
$instance->find() が変数ではない配列を返すため、このコードは厳密な標準の警告を生成します。引数として渡されると、(& 演算子を使用して) 配列を参照によって渡そうとするため、警告がトリガーされます。
ただし、次のコードでは:
function get_arr(){ return array(1, 2); } $el = array_shift(get_arr());
厳格な標準get_arr() は配列を返す関数であるため、警告は報告されません。したがって、これは単なる配列値ではなく変数として扱われます。
厳密な標準の警告は、特にメソッドまたは関数が呼び出され、その戻り値が次のような状況で発生します。参照によって渡されました。たとえば、次のコードを考えてみましょう。
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() が変数ではない配列を返すため、厳密な標準の警告が生成されます。ただし、これは & 演算子を使用して test_arr メソッドへの参照によって渡されます。
厳格な標準の警告を解決するには、次の 2 つの方法が考えられます。
function test_arr($a) { var_dump($a); }
$inter = $instance->find(); $el = array_shift($inter);
以上がPHP が「参照によって変数のみを渡す必要がある」という警告を発行するのはなぜですか?また、その警告はどのように解決できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。