function getscore($myarray) {
$ourscore = 0;
if (($myarray[4] == '') AND (($myarray[5] == '') OR ($myarray[5] == '00:00:00')) AND (($myarray[6] == '') OR ($myarray[6] == '00:00:00'))) {
$ourscore = 1;
}
else if (($myarray[4] != '') AND (($myarray[5] == '') OR ($myarray[5] == '00:00:00')) AND (($myarray[6] == '') OR ($myarray[6] == '00:00:00'))) {
$ourscore = 2;
}
else if (($myarray[4] == '') AND ((($myarray[5] != '') AND ($myarray[5] != '00:00:00')) OR (($myarray[6] != '') AND ($myarray[6] != '00:00:00')))) {
$ourscore = 3;
}
else if (($myarray[4] != '') AND ((($myarray[5] != '') AND ($myarray[5] != '00:00:00')) OR (($myarray[6] != '') AND ($myarray[6] != '00:00:00')))) {
$ourscore = 4;
}
return $ourscore;
}
function cmp2(array $a, array $b)
{
return (getscore($b) - getscore($a));
}
$initarr = array();
$initarr [0] = ['1','2','2022-04-07','2022-04-15', '', '10:35:00', '11:35:00', '1', '850'];
$initarr [1] = ['1','3','2022-04-01','2022-04-20', '5', '10:30:00', '11:30:00', '1', '700'];
$initarr [2] = ['1','5','2022-04-05','2022-04-15', '4', '', '', '1', '800'];
$initarr [3] = ['1','0','2022-04-07','2022-04-15', '', '', '', '1', '800'];
$initarr [4] = ['1','5','2022-04-06','2022-04-16', '', '', '', '0', '900'];
$initarr [5] = ['1','5','2022-04-07','2022-04-12', '2', '', '', '0', '600'];
$maxscoresarray = array();
if (count($initarr) > 0) {
usort($initarr, 'cmp2');
$maxscoresarray = $initarr[0];
}
echo "maximum score array is<br>";
var_dump($maxscoresarray);
После переезда на новый сервер получаю:
"Usort() expects parameter 2 to be a valid callback error", в php5.6 все работало.
Пробовал еще:
usort($initarr, function($a, $b) {
cmp2($a, $b);
});
И также:
function cmp2(array $a, array $b)
{
return getscore($b) <=> getscore($a);
}
В этих случаях ошибка не вылазит, но и сортировка не производится. Что изменить в коде, чтобы заставить сортировать на сервере с php7?