ok menggunakan usort dengan fungsi tidak begitu rumit
Ini adalah apa yang saya miliki sebelumnya dalam kode linier saya
function merchantSort($a,$b){
return ....// stuff;
}
$array = array('..','..','..');
untuk mengurutkan saya cukup lakukan
usort($array,"merchantSort");
Sekarang kami meningkatkan kode dan menghapus semua fungsi global dan menempatkannya di tempat yang sesuai. Sekarang semua kode ada di kelas dan saya tidak tahu bagaimana menggunakan fungsi usort untuk mengurutkan array dengan parameter yang merupakan metode objek daripada fungsi sederhana
class ClassName {
...
private function merchantSort($a,$b) {
return ...// the sort
}
public function doSomeWork() {
...
$array = $this->someThingThatReturnAnArray();
usort($array,'$this->merchantSort'); // ??? this is the part i can't figure out
...
}
}
Pertanyaannya adalah bagaimana cara memanggil metode objek di dalam fungsi usort ()
$this
(neato).usort($array, 'ClassName:merchantSort')
, bukan?'self::merchantSort'
dan berfungsi.$value_compare_func
adalahcallable
array($this, 'merchantSort')
sumber
Anda harus lulus
$this
misalnya:usort( $myArray, array( $this, 'mySort' ) );
Contoh lengkap:
sumber
Dalam contoh ini saya mengurutkan berdasarkan bidang di dalam array yang disebut AverageVote.
Anda dapat menyertakan metode di dalam panggilan, yang berarti Anda tidak lagi memiliki masalah cakupan kelas, seperti ini ...
sumber
Di kelas model Laravel (5.6), saya menyebutnya seperti ini, kedua metode tersebut adalah public static, menggunakan php 7.2 pada windows 64 bit.
Saya memang memanggil usortCalledFrom () seperti ini
Tak satu pun dari ini adalah pekerjaan
sumber
static::
alih-alih nama kelas yang saya butuhkan, terima kasih telah menyebutkannya.