Rumah > Soal Jawab > teks badan
<?php
function test(...$args)
{
print_r($args);
}
test(1,2,3);
//输出
Array
(
[0] => 1
[1] => 2
[2] => 3
)
?>
Anda boleh meletakkan parameter ke dalam tatasusunan semasa memanggil ujian
Apakah keperluan ciri baharu ini?
習慣沉默2017-06-14 10:51:43
Maksudnya ialah anda tidak perlu mengisytiharkan tatasusunan secara berasingan
我想大声告诉你2017-06-14 10:51:43
Anda boleh memahaminya sebagai gula sintaksisfunc_get_args
Ia boleh dilaksanakan, tetapi kadangkala ia tidak begitu elegan
function sort($mode,...$args) {
if($mode === SORT_DESC) {
print_r($args);
}
}
function sort() {
$args = func_get_args();
if($args[0] === SORT_DESC){
array_shift($args);// 去除mode
print_r($args);
}
}
欧阳克2017-06-14 10:51:43
Sebagai contoh, apabila anda ingin memanggil antara muka, alamat perkhidmatan banyak antara muka adalah sama, tetapi ia dilaksanakan oleh kelas dan kaedah masing-masing Jika anda ingin merangkum, anda tidak boleh menentukan jenis dan nombor parameter , $className ialah Kelas khusus anda, $actionName ialah kaedah yang dilaksanakan dalam kelas
call_user_func_array([$className, $actionName], $params)
Dengan cara ini, sukar untuk anda mengendalikan pelbagai parameter di satu tempat Perkara yang mudah ialah apabila menulis antara muka panggilan tertentu, parameter diluluskan mengikut peraturan, tetapi panggilan dan pemulangan sebenar dihantar secara seragam oleh $. params. Walaupun PHP adalah jenis yang sama, antara muka yang anda panggil mungkin ditulis dalam bahasa statik lain dan jenisnya mestilah konsisten.
Semestinya, jika anda hanya menggunakannya sekali, anda boleh lulus terus pembolehubah, tidak perlu bersusah payah.
我想大声告诉你2017-06-14 10:51:43
redis.lpush
adegan
public function lPush( $key, $value1, $value2 = null, $valueN = null ) {}
迷茫2017-06-14 10:51:43
Ia hanyalah gula sintaksis, dengan parameter berubah-ubah. Banyak bahasa telah melaksanakannya, dan PHP juga telah melaksanakannya