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
655 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!

sumber:php.cn
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