Две следующие функции usort вызывают фатальную ошибку Базовая лямбда-функция для закрытия не найдена в нашей продуктивной среде (PHP 5.4). Это, похоже, известная ошибка PHP, которая должна быть исправлена к настоящему времени (https://bugs.php.net/bug.php?id=52144), но это все еще происходит для нас.Перезапись функции usort из-за фатальной ошибки (ошибка PHP)
В любом случае, к сожалению, у нас нет времени выяснить, что не так с нашими конфигурациями PHP и т. Д. Мы хотели бы переписать эти две функции без использования анонимных функций, чтобы ошибка больше не возникала.
1) Сортировка многомерного массива ($ массив) по значению ключа "положении":
// ARRAY BEFORE Array ( [0] => Array ( [ftid] => 3339685 [position] => 2 [auswahl] => 7179726 [keine_antwort] => ) [1] => Array ( [ftid] => 3339686 [position] => 1 [auswahl] => 7179727 [keine_antwort] => ) )
// FUNCTION THAT NEEDS TO BE REWRITTEN
usort($array, function($a, $b) {
return $a['position'] - $b['position'];
});
// ARRAY AFTER Array ( [0] => Array ( [ftid] => 3339686 [position] => 1 [auswahl] => 7179727 [keine_antwort] => ) [1] => Array ( [ftid] => 3339685 [position] => 2 [auswahl] => 7179726 [keine_antwort] => ) )
2) Сортировка многомерного массива ($ массив) в соответствии с порядком второго массива ($ position_order):
// $array before Array ( [0] => Array ( [ftid] => 3339685 [position] => 1 [auswahl] => 7179726 [keine_antwort] => ) [1] => Array ( [ftid] => 3339686 [position] => 2 [auswahl] => 7179727 [keine_antwort] => ) ) // $position_order (key value corresponds to key 'ftid' in $array Array ( [3339686] => 1 [3339685] => 2 )
// FUNCTION THAT NEEDS TO BE REWRITTEN
usort($array, function($a, $b) use($position_order) {
return (isset($position_order[$a['ftid']]) ? ($position_order[$a['ftid']] - $position_order[$b['ftid']]) : 1);
});
// $array Array ( [0] => Array ( [ftid] => 3339686 [position] => 2 [auswahl] => 7179727 [keine_antwort] => ) [1] => Array ( [ftid] => 3339685 [position] => 1 [auswahl] => 7179726 [keine_antwort] => ) )
Особенно последнее вызывает некоторую головную боль, так как мы не знаем, как пройти «вне» массив $ position_order.
Может быть, пример исходного массива и массива результатов. – AbraCadaver
Это работало или вы нашли что-то еще? – AbraCadaver