次の 2 つの usort 関数は、本稼働環境 (PHP 5.4) で見つからないクロージャのベース ラムダ関数という致命的なエラーをスローします。これは既知の PHP バグであり、今すぐ修正する必要があるようですが ( https://bugs.php.net/bug.php?id=52144 )、まだ発生しています。
とにかく、残念ながら、PHP 構成などの何が問題なのかを突き止める時間がありません。エラーが発生しないように、無名関数を使用せずにこれら 2 つの関数を書き直したいと考えています。
1)キー「位置」の値による多次元配列 ($array) の順序付け:
// 前の配列 配列 ( [0] => 配列 ( [ftid] => 3339685 [位置] => 2 [auswahl] => 7179726 [keine_antwort] => ) [1] => 配列 ( [ftid] => 3339686 [位置] => 1 [auswahl] => 7179727 [keine_antwort] => ) )
// FUNCTION THAT NEEDS TO BE REWRITTEN
usort($array, function($a, $b) {
return $a['position'] - $b['position'];
});
// 配列後 配列 ( [0] => 配列 ( [ftid] => 3339686 [位置] => 1 [auswahl] => 7179727 [keine_antwort] => ) [1] => 配列 ( [ftid] => 3339685 [位置] => 2 [auswahl] => 7179726 [keine_antwort] => ) )
2) 2 番目の配列 ($position_order) の順序に従った多次元配列 ($array) の順序付け:
// $array before 配列 ( [0] => 配列 ( [ftid] => 3339685 [位置] => 1 [auswahl] => 7179726 [keine_antwort] => ) [1] => 配列 ( [ftid] => 3339686 [位置] => 2 [auswahl] => 7179727 [keine_antwort] => ) ) // $position_order (キー値は $array のキー 'ftid' に対応します 配列 ( [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);
});
// $配列 配列 ( [0] => 配列 ( [ftid] => 3339686 [位置] => 2 [auswahl] => 7179727 [keine_antwort] => ) [1] => 配列 ( [ftid] => 3339685 [位置] => 1 [auswahl] => 7179726 [keine_antwort] => ) )
特に後者は、「外側」の配列 $position_order を渡す方法がわからないため、頭痛の種になります。