Sort Multi Dimensional Array in PHP

You may already know how to sort an array in PHP using various array sorting functions like sort, asort, ksort, arsort, krsort.

Here we discuss how to sort a multi dimensional array in PHP.

Sorting Multi Dimensional Array in PHP by Key-Value

I have created a function like following to sort multi dimensional array in PHP using a specific key-value.


//Products Array
$products = [
	[
		'id' => 1,
		'title' => 'Laptop',
		'stock' => 12,
	],[
		'id' => 2,
		'title' => 'Mobile',
		'stock' => 30,
	],[
		'id' => 3,
		'title' => 'USB Cable',
		'stock' => 5,
	],[
		'id' => 4,
		'title' => 'Power Bank',
		'stock' => 53,
	],[
		'id' => 5,
		'title' => 'Mobile Charger',
		'stock' => 28,
	],
];

//Sort array by stock in descending order
$sorted_products = sort_array_by_key($products, 'stock');
print_r($sorted_products);


//Function to sort array by key
function sort_array_by_key($array, $sort_key){
	$key_array = array_column($array, $sort_key);
	array_multisort($key_array, SORT_DESC, $array); //or SORT_ASC
	return $array;
}

Output


/**
OUTPUT
*/
Array
(
    [0] => Array
        (
            [id] => 4
            [title] => Power Bank
            [stock] => 53
        )

    [1] => Array
        (
            [id] => 2
            [title] => Mobile
            [stock] => 30
        )

    [2] => Array
        (
            [id] => 5
            [title] => Mobile Charger
            [stock] => 28
        )

    [3] => Array
        (
            [id] => 1
            [title] => Laptop
            [stock] => 12
        )

    [4] => Array
        (
            [id] => 3
            [title] => USB Cable
            [stock] => 5
        )

)