Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah anda boleh menghantar bilangan argumen yang berubah-ubah kepada fungsi PHP berdasarkan panjang tatasusunan?

Bagaimanakah anda boleh menghantar bilangan argumen yang berubah-ubah kepada fungsi PHP berdasarkan panjang tatasusunan?

Patricia Arquette
Patricia Arquetteasal
2024-11-09 08:27:02789semak imbas

How can you pass a variable number of arguments to a PHP function based on an array's length?

Melalui Argumen Dinamik dalam Fungsi PHP

Dalam PHP, adalah mungkin untuk mencipta fungsi yang menerima nombor pembolehubah argumen menggunakan func_num_args() dan func_get_args(). Walau bagaimanapun, menentukan hujah untuk dihantar ke fungsi tersebut boleh mencabar jika nombornya bergantung pada panjang tatasusunan.

Menggunakan call_user_func_array

Nasib baik, PHP menyediakan fungsi call_user_func_array, yang membolehkan anda memanggil fungsi dengan pelbagai argumen. Jika bilangan argumen yang anda ingin luluskan ditentukan oleh panjang tatasusunan, anda boleh membungkusnya ke dalam tatasusunan dan menggunakannya sebagai parameter kedua call_user_func_array.

Contoh

Pertimbangkan fungsi berikut:

function test() {
  var_dump(func_num_args());
  var_dump(func_get_args());
}

Untuk memanggilnya dengan pelbagai argumen daripada tatasusunan, anda boleh melakukan perkara berikut:

$params = array(
  10,
  'glop',
  'test',
);

call_user_func_array('test', $params);

Output

int 3
array
  0 => int 10
  1 => string 'glop' (length=4)
  2 => string 'test' (length=4)

Ini menunjukkan bahawa fungsi telah menerima tiga parameter, seolah-olah ia dipanggil secara eksplisit dengan:

test(10, 'glop', 'test');

Atas ialah kandungan terperinci Bagaimanakah anda boleh menghantar bilangan argumen yang berubah-ubah kepada fungsi PHP berdasarkan panjang tatasusunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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