Эй, ребята, у меня есть какой-то серьезно хакерский код с вложенной функцией, но я не могу заставить его работать по какой-то причине ни с замыканиями, ни с лямбда-функциями, что, как я полагаю, было бы предпочтительнее, может кто-нибудь помочь мне понять, как я могу это повернуть в замыкание, лямбду или что-то еще, чтобы НЕ загрязнять мою глобальную область ненужными Б.С. ??
Вот мои два метода
/**
* Sort an array of object is ASC order.
* @param object $objArray An array of objects
* @return object Sorted array of objects
*/
protected function objSort($objArray)
{
// turns an Object Array into and Assoc Array
$array = self::objToArr($objArray);
// avoid recursively declaring the function
if (! function_exists('dsort'))
{
// nested functions are stupid.
function dsort(&$array)
{
foreach ($array AS &$current)
{
if (is_array($current)) dsort($current);
}
ksort($array);
}
}
dsort($array);
// back to an Object Array
return $objArray = json_decode(json_encode($array));
}
/**
* Turns an object array into an associative multidimensional array.
* @param object $object An array of objects
* @return array An associative array
*/
private static function objToArr($object)
{
$array = array();
$arrayObject = is_object($object) ? get_object_vars($object) : $object;
foreach ($arrayObject as $key => $value)
{
$value = (is_array($value) || is_object($value)) ? self::objToArr($value) : $value;
$array[$key] = $value;
}
return $array;
}
Они будут принимать массив объектов, сортировать их в алфавитном порядке как ассоциативный массив и возвращать их как массив объектов.