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
)

