Fungsi PHP: Mengurai Daftar Angka

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
)

Tinggalkan komentar

Alamat email Anda tidak akan dipublikasikan.