I have a multiple array that is also associative.But I want to sort multidimensional array by value.Here I want sort this array by its position. You know default php function have methods which only sort one dimensional array not multidimensional array.So for that I have created a function which will give the result to sort multidimensional array by value.Here is the user defined function to sort multidimensional array in php as there is no default function to sort multidimensional array

for example:


$dataArray[] = array('name' => 'Jyotiranjan', 'position' => 5);
$dataArray[] = array('name' => 'Gopal', 'position' => 2);
$dataArray[] = array('name' => 'Jyotikrishna', 'position' => 3);
$dataArray[] = array('name' => 'Krish', 'position' => 2);
$dataArray[] = array('name' => 'Ramkrishna', 'position' => 1);
$dataArray[] = array('name' => 'Hareram', 'position' => 4);

call sort function:


$sorted = arrayOrderBy($dataArray, 'position', SORT_ASC, 'name', SORT_DESC);
$sorted = arrayOrderBy($dataArray, 'position', SORT_ASC, 'name', SORT_ASC);
$sorted = arrayOrderBy($dataArray, 'position', SORT_DESC);

In the above example I have the function called “arrayOrderBy” and ‘position’ and ‘name’ is the keys and the values for position’s are 5,2,3,2,1,4.If I use the function “arrayOrderby” to sort multidimenisonal array by value then the result will be like :1,2,2,3,4,5 if it is ascending and 5,4,3,2,2,1 if it is descending.

sort multidimensional array by value
sort multidimensional array by value

function arrayOrderBy()
{
    $argsOfFunction = func_get_args();
    $dataArray = array_shift($argsOfFunction);
    foreach ($argsOfFunction as $n => $field) {
        if (is_string($field)) {
            $tmp = array();
            foreach ($dataArray as $key => $row)
                $tmp[$key] = $row[$field];
            $argsOfFunction[$n] = $tmp;
            }
    }
    $argsOfFunction[] = $dataArray;
    call_user_func_array('array_multisort', $argsOfFunction);
    return array_pop($argsOfFunction);
}


Sort multidimensional array by value
Tagged on:                 

Leave a Reply

Your email address will not be published. Required fields are marked *