3v4l.org

run code in 300+ PHP versions simultaneously
<?php function createMultiKeyCmpFunc($cmp, $key /* , keys... */) { $keys = func_get_args(); array_shift($keys); return function (array $a, array $b) use ($cmp, $keys) { return array_reduce($keys, function ($result, $key) use ($cmp, $a, $b) { return $result ?: call_user_func($cmp, $a[$key], $b[$key]); }); }; } $array = [ ['foo' => 4, 'bar' => 2, 'baz' => 3], ['foo' => 4, 'bar' => 3, 'baz' => 3], ['foo' => 3, 'bar' => 2, 'baz' => 3], ['foo' => 4, 'bar' => 1, 'baz' => 6], ['foo' => 3, 'bar' => 2, 'baz' => 3], ['foo' => 1, 'bar' => 4, 'baz' => 3], ['foo' => 2, 'bar' => 2, 'baz' => 1], ['foo' => 6, 'bar' => 6, 'baz' => 8], ['foo' => 6, 'bar' => 2, 'baz' => 3], ['foo' => 3, 'bar' => 1, 'baz' => 5], ['foo' => 4, 'bar' => 2, 'baz' => 3], ]; usort($array, createMultiKeyCmpFunc('strcmp', 'foo', 'bar', 'baz')); print_r($array);

preferences:
47.15 ms | 402 KiB | 5 Q