Saya memiliki kode berikut:
function lower_than_10($i) {
return ($i < 10);
}
yang bisa saya gunakan untuk memfilter array seperti ini:
$arr = array(7, 8, 9, 10, 11, 12, 13);
$new_arr = array_filter($arr, 'lower_than_10');
Bagaimana cara menambahkan argumen ke lower_than_10 sehingga ia juga menerima nomor untuk diperiksa? Seperti, jika saya punya ini:
function lower_than($i, $num) {
return ($i < $num);
}
bagaimana memanggilnya dari array_filter melewati 10 ke $ num atau nomor berapa pun?
array_filter
? Ini hanyalah sebuahcallable
; dalam kasus di atas yang cocok dengan "Tipe 3: Panggilan metode objek"array(<instance>, <method-name>)
:, lih. PHP: Callbacks / Callables - Manual .jika Anda menggunakan php 5.3 ke atas, Anda dapat menggunakan closure untuk menyederhanakan kode Anda:
sumber
use
kata tersebut untuk memberikan lambda parameter tambahan. Terima kasih atas petunjuk yang sangat berharga! :)Di PHP 5.3 atau lebih baik, Anda dapat menggunakan closure :
sumber
create_function()
.create_function()
pada dasarnyaeval()
dengan nama lain, dan sama jahatnya. Menggunakannya harus dicegah. Solusi berbasis kelas yang aneh yang diberikan dalam jawaban yang diterima adalah solusi yang lebih baik daripada menggunakancreate_function()
dalam kasus ini.jika Anda membutuhkan beberapa parameter untuk diteruskan ke fungsi, Anda dapat menambahkannya ke pernyataan use menggunakan ",":
sumber
Sebagai tambahan untuk jawaban jensgram Anda dapat menambahkan lebih banyak keajaiban dengan menggunakan
__invoke()
metode ajaib.Ini akan memungkinkan Anda untuk melakukannya
sumber
Ini memungkinkan Anda untuk memfilter item dalam array multidimensi:
sumber