Bagaimana saya bisa mengurutkan array ini dengan nilai kunci "pesanan"? Meskipun nilainya saat ini berurutan, nilainya tidak selalu.
Array
(
[0] => Array
(
[hashtag] => a7e87329b5eab8578f4f1098a152d6f4
[title] => Flower
[order] => 3
)
[1] => Array
(
[hashtag] => b24ce0cd392a5b0b8dedc66c25213594
[title] => Free
[order] => 2
)
[2] => Array
(
[hashtag] => e7d31fc0602fb2ede144d18cdffd816b
[title] => Ready
[order] => 1
)
)
php
arrays
sorting
multidimensional-array
Stefan
sumber
sumber
Jawaban:
Coba usort , Jika Anda masih menggunakan PHP 5.2 atau sebelumnya, Anda harus mendefinisikan fungsi penyortiran terlebih dahulu:
Mulai di PHP 5.3, Anda dapat menggunakan fungsi anonim:
Dan akhirnya dengan PHP 7 Anda dapat menggunakan operator pesawat ruang angkasa :
Untuk memperluas ini ke penyortiran multi-dimensi, referensi elemen penyortiran kedua / ketiga jika yang pertama adalah nol - paling baik dijelaskan di bawah ini. Anda juga dapat menggunakan ini untuk mengurutkan pada sub-elemen.
Jika Anda perlu mempertahankan asosiasi kunci, gunakan
uasort()
- lihat perbandingan fungsi penyortiran array dalam manualsumber
uasort()
jika Anda ingin mempertahankan kunci array.sumber
Saya menggunakan fungsi ini:
sumber
array_multisort
dan karenanya tidak perlu melakukan pra-alokasi$sort_col
, menghemat waktu dan memori .&$arr
bukan hanya$arr
?Saya biasanya menggunakan usort , dan melewati fungsi perbandingan saya sendiri. Dalam hal ini, sangat sederhana:
Di PHP 7 menggunakan operator pesawat ruang angkasa:
sumber
$a['order']
3, dan$b['order']
6, saya akan kembali -3. Benar?Satu pendekatan untuk mencapai ini adalah seperti ini
Hasil:
sumber
Untuk mengurutkan array berdasarkan nilai kunci "judul" gunakan:
strcmp membandingkan string.
uasort () mempertahankan kunci array seperti yang ditentukan.
sumber
Ini menangani kedua huruf besar dan kecil.
sumber
Gunakan
array_multisort()
,array_map()
DEMO
sumber
array_multisort
referensi itu parameter pertama.Pendekatan yang paling fleksibel adalah menggunakan metode ini
inilah sebabnya:
Anda dapat mengurutkan berdasarkan tombol apa saja (juga suka
'key1.key2.key3'
atau['k1', 'k2', 'k3']
)Bekerja baik pada array asosiatif dan tidak asosiatif (
$assoc
bendera)Itu tidak menggunakan referensi - mengembalikan array yang diurutkan baru
Dalam kasus Anda, sesederhana:
Metode ini adalah bagian dari perpustakaan ini .
sumber
Mari kita hadapi itu: php TIDAK memiliki fungsi sederhana di luar kotak untuk menangani dengan benar setiap skenario susunan array.
Rutin ini intuitif, yang berarti lebih cepat debugging dan pemeliharaan:
sumber
global
bendera merah besar dan umumnya tidak disarankan . Mengapamysql_fetch_array
diperlihatkan untuk pertanyaan ini alih-alih susunan sumber OP, dan bahwa tidak ada penjelasan tentang apa yang kode Anda lakukan dan apa yang bisa diharapkan hasilnya? Secara keseluruhan ini adalah pendekatan yang sangat kompleks untuk mencapai hasil akhir yang diinginkan.global
lihat: 3v4l.org/FEeFC Ini menghasilkan variabel yang didefinisikan secara eksplisit, bukan yang dapat diubah dan diakses secara global.Anda juga bisa mengurutkan array multi dimensi untuk beberapa nilai seperti
dengan
Output menggunakan
print_r($arr)
:PS) menggunakan strcmp akan menjadi pilihan yang baik untuk membandingkan string.
sumber