Kebetulan saya lagi perlu fungsi PHP khusus untuk mengurai angka. Sudah pernah buat fungsi ini sebelumnya, tapi lagi-lagi ga tau di mana tuh fungsi harus dicari. Supaya gampang nyarinya, mending ditaruh di blog saja.
Script ini sederhana aja, bisa ditulis dalam 5 menit saja. Tapi kalo setiap kali harus buat fungsi yang sudah pernah dibuat, cape juga kali yah.
Parameter yg diinput dalam fungsi ini berupa string daftar angka-angka, contohnya: 1-4, 8, 10, 20-23. Output yang diharapkan adalah sebuah Array dengan daftar angka yang sudah tersortir, seperti berikut: 1,2,3,4,8,10,20,21,22,23
Berikut Scriptnya:
function parse_number_list($numbers) { $num_arr = array(); $list_num = explode(',', $numbers); foreach($list_num as $key=>$value) { if (preg_match("/-/i", $value)) { $x = explode('-', $value); if (isset($x[0]) AND isset($x[1])) { if (is_numeric($x[0]) AND is_numeric($x[1])) { for($i=$x[0]; $i<=$x[1]; $i++) if (!in_array($value, $num_arr)) array_push($num_arr, $i); } } } else if (!in_array($value, $num_arr)) array_push($num_arr, $value); } return asort($num_arr); } $num = '1-4, 8, 10, 20-23'; print_r(parse_number_list($num));
Hasilnya:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 8 [5] => 10 [6] => 20 [7] => 21 [8] => 22 [9] => 23 )