Pada dasarnya saya menggunakan fungsi praktis ini untuk memproses baris db (menutup mata pada PDO dan / atau hal-hal lain)
function fetch($query,$func) {
$query = mysql_query($query);
while($r = mysql_fetch_assoc($query)) {
$func($r);
}
}
Dengan fungsi ini saya cukup melakukan:
fetch("SELECT title FROM tbl", function($r){
//> $r['title'] contains the title
});
Katakanlah sekarang saya perlu menggabungkan semua $r['title']
dalam var (ini hanya sebuah contoh).
Bagaimana saya bisa melakukan itu? Saya sedang memikirkan sesuatu seperti ini, tetapi tidak terlalu elegan:
$result = '';
fetch("SELECT title FROM tbl", function($r){
global $result;
$result .= $r['title'];
});
echo $result;
early binding
. Namun saya kira dalam contoh di atas ketikause (&$result)
dilewatkan oleh referensi itu tidak masalah?use
adalah pengikatan awal - jika yang Anda maksud adalah solusi untuk pengikatan yang terlambat - Anda akan melewatkan variabel melaluiuse
referensi - menggunakan&
=>use (&$result)
dan mengubah$result
variabel sebelum Anda memanggil fungsi anonim (atau sesuatu, yang menyebutnya)Bagaimana dengan menulis ulang 'fetch' untuk memanggil $ func hanya sekali?
Dengan cara ini Anda akan memanggil $ func hanya sekali dan memproses ulang array setelah diambil? Tidak yakin dengan kinerjanya meskipun memanggil 200 kali suatu fungsi kedengarannya bukan ide yang bagus.
sumber