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.
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); }