Monday, August 8, 2011

Array Count Group dan Multidimension Array Sort pada PHP

Misalkan kita memiliki array sebagai berikut, kemudian ingin di group dan kemudian di sort seperti command di mysql.
Array
(
    [0] => Array
        (
            [countryid] => ID
            [countryname] => Indonesia
            [totalaccess] => 31
        )

    [1] => Array
        (
            [countryid] => US
            [countryname] => United States
            [totalaccess] => 23
        )

    [2] => Array
        (
            [countryid] => ID
            [countryname] => Indonesia
            [totalaccess] => 5
        )

    [3] => Array
        (
            [countryid] => ID
            [countryname] => Indonesia
            [totalaccess] => 2
        )

    [4] => Array
        (
            [countryid] => ID
            [countryname] => Indonesia
            [totalaccess] => 2
        )

    [5] => Array
        (
            [countryid] => ID
            [countryname] => Indonesia
            [totalaccess] => 1
        )

)
di group berdasarkan countryid dan di count totalaccess nya, sehingga menjadi
Array
(
    [ID] => Array
        (
            [countryid] => ID
            [countryname] => Indonesia
            [totalaccess] => 41
        )

    [US] => Array
        (
            [countryid] => US
            [countryname] => United States
            [totalaccess] => 23
        )

)
group menggunakan fungsi sebagai berikut :
function groupArray($result, $groupkey, $countkey)
{
	$finalresult = array();
	foreach($result as $res) {
		$key = $res[$groupkey];

		if(!isset($finalresult[$key])){
			$finalresult[$key] = $res;
		} else {
			$finalresult[$key][$countkey] = $finalresult[$key][$countkey] + $res[$countkey];
		}
	}
	return $finalresult;
}
kemudian di sort berdasarkan totalaccess
Array
(
    [0] => Array
        (
            [countryid] => US
            [countryname] => United States
            [totalaccess] => 23
        )

    [1] => Array
        (
            [countryid] => ID
            [countryname] => Indonesia
            [totalaccess] => 41
        )

)
sort menggunakan fungsi sebagai berikut :
function sortArray($a, $sortkey, $mode = "ASC")
{
	foreach($a as $k=>$v) {
		$b[$k] = strtolower($v[$sortkey]);
	}

	if($mode == "ASC") asort($b);
	else arsort($b);

	foreach($b as $key=>$val) {
		$c[] = $a[$key];
	}
	return $c;
}

No comments:

Post a Comment