Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah PHP Isu 'Strict Standard: Hanya pembolehubah harus diluluskan dengan rujukan' Apabila Menggunakan array_shift()?

Mengapakah PHP Isu 'Strict Standard: Hanya pembolehubah harus diluluskan dengan rujukan' Apabila Menggunakan array_shift()?

Mary-Kate Olsen
Lepaskan: 2024-12-20 07:39:11
asal
718 orang telah melayarinya

Why Does PHP Issue

Memahami Lulus Rujukan dalam PHP: Standard Strict dan Array_Shift()

Dalam PHP, mod standard ketat boleh mengeluarkan amaran apabila menghantar nilai bukan pembolehubah melalui rujukan. Contoh biasa ini ialah apabila menggunakan fungsi array_shift().

Bilakah Amaran Berlaku?

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
Salin selepas log masuk

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
Salin selepas log masuk

Tingkah Laku Bukan Intuitif

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.

Menyelesaikan Amaran

Untuk menyelesaikan amaran dalam mod ketat, terdapat dua pilihan:

  1. Ubah suai Tandatangan Kaedah: Tukar tandatangan kaedah mengembalikan tatasusunan untuk mengelakkan menggunakan rujukan.
  2. Gunakan Pembolehubah Perantaraan: Berikan tatasusunan yang dikembalikan oleh kaedah kepada pembolehubah perantaraan sebelum menghantarnya kepada array_shift().

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() ?: []);
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan