Dalam PHP, mod standard ketat boleh mengeluarkan amaran apabila menghantar nilai bukan pembolehubah melalui rujukan. Contoh biasa ini ialah apabila menggunakan fungsi array_shift().
Amaran "Strict standard: Only variable should be pass by reference" muncul apabila array_shift( ) digunakan dengan nilai bukan pembolehubah yang diluluskan sebagai hujah. Sebagai contoh:
$instance = new MyClass(); $el = array_shift($instance->find(...)); // Warning
Sebaliknya, apabila array_shift() dipanggil dengan pembolehubah yang mengandungi tatasusunan, tiada amaran dijana:
function get_arr() { return [1, 2]; } $el = array_shift(get_arr()); // No warning
Amaran boleh mengelirukan kerana array_shift() ialah fungsi yang mengembalikan nilai tatasusunan. Walau bagaimanapun, dalam mod ketat, PHP menganggap nilai pulangan array_shift() sebagai bukan pembolehubah.
Untuk menyelesaikan amaran dalam mod ketat, terdapat dua pilihan:
Untuk contoh:
// 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() ?: []);
Atas ialah kandungan terperinci Mengapakah PHP Isu 'Strict Standard: Hanya pembolehubah harus diluluskan dengan rujukan' Apabila Menggunakan array_shift()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!