Есть несколько способов сделать это. Я выбрал способ, который не требует значительного изменения кода. Все, что делает этот код, это добавляет элементы в front временного массива, если только вы не хотите быть последним. Тот, который он помещает в конец массива.
$MonthlyData = [
["Name" => "AHMAD SUFFIAN BIN AHMAD LOTFI","SLAData" => [0,0,0,0,0,0],"RatingData" => [0,0,0,0,0,0]],
["Name" => "OVERALL","SLAData" => [19,8,50,0,0,100],"RatingData" => [95,95,100,0,0,0]],
["Name" => "JAYALETCHUMI A\/P VENGADASALAM","SLAData" => [33,14,100,0,0,0],"RatingData" => [90,90,100,0,0,0]],
["Name" => "MOHAMMAD FIRDHAUS BIN ISMAIL","SLAData" => [0,0,0,0,0,0],"RatingData" => [100,100,0,0,0,0]],
["Name" => "YOGESWARAN A\/L PUSSAN","SLAData" => [0,0,0,0,0,0],"RatingData" => [0,0,0,0,0,0]],
["Name" => "JAYAKUMAR PARAMASIVAM","SLAData" => [0,0,0,0,0,100],"RatingData" => [0,0,0,0,0,0]]
];
$Temp=[];
foreach ($MonthlyData as $data) {
if ($data['Name'] === 'OVERALL') {
$Temp[] = $data;
}
else {
array_unshift($Temp, $data);
}
}
$MonthlyData = $Temp;
Демо
Если вы хотите более краткий способ сделать это, используйте usort()
для сортировки на основе указанных критериев. В этом случае всегда ставьте массив последним, если его «name» имеет значение «OVERALL».
usort($MonthlyData, static function ($a, $b) {
return ($a['Name'] === 'OVERALL') ? 1 : -1;
});
Demo