Функция
uksort()// Берем входящий массив:
$input = [
[
'gq_address' => '188.120.254.140',
'gq_hostname' => '• RGPlay | DarkRP [Быстрая загрузка]',
'gq_maxplayers' => 128,
'gq_numplayers' => 0,
'gq_online' => true,
'gq_port_client' => 27015,
],
[
'gq_address' => '62.109.18.242',
'gq_hostname' => 'Default Breach Server',
'gq_maxplayers' => 128,
'gq_numplayers' => 0,
'gq_online' => true,
'gq_port_client' => 27015,
],
];
// Определяем желаемый порядок ключей:
$order = [
'gq_hostname',
'gq_address',
'gq_port_client',
'gq_online',
'gq_numplayers',
'gq_maxplayers',
];
// Перебираем элементы входящего массива и сортируем их по ключам:
$output = array_map( function($array) use ($order)
{
// Эта функция сортирует по ключам
uksort( $array, function($a, $b) use ($order)
{
$a_desired_position = array_search($a, $order, true);
$b_desired_position = array_search($b, $order, true);
// Вот тут вся магия:
// нужно вернуть отрицательное число, 0 или положительное число,
// в зависимости от положения одного элемента относительно другого.
return $a_desired_position - $b_desired_position;
} );
return $array;
}, $input );
var_dump($input);
var_dump($output);
Вот что мы получаем в итоге:
// Входящий массив:
array:2 [▼
0 => array:6 [▼
"gq_address" => "188.120.254.140"
"gq_hostname" => "• RGPlay | DarkRP [Быстрая загрузка]"
"gq_maxplayers" => 128
"gq_numplayers" => 0
"gq_online" => true
"gq_port_client" => 27015
]
1 => array:6 [▼
"gq_address" => "62.109.18.242"
"gq_hostname" => "Default Breach Server"
"gq_maxplayers" => 128
"gq_numplayers" => 0
"gq_online" => true
"gq_port_client" => 27015
]
]
// Отсортированный массив:
array:2 [▼
0 => array:6 [▼
"gq_hostname" => "• RGPlay | DarkRP [Быстрая загрузка]"
"gq_address" => "188.120.254.140"
"gq_port_client" => 27015
"gq_online" => true
"gq_numplayers" => 0
"gq_maxplayers" => 128
]
1 => array:6 [▼
"gq_hostname" => "Default Breach Server"
"gq_address" => "62.109.18.242"
"gq_port_client" => 27015
"gq_online" => true
"gq_numplayers" => 0
"gq_maxplayers" => 128
]
]
Вывод: учите матчасть.