usort и параметры пользовательской функции

.scu

Новичок
usort и параметры пользовательской функции

Есть ли возможность встроенными методами PHP при сортировке пользовательской функцией задать ее параметры?
Поясню:
Есть функция usort(), которая позволяет сортировать массив пользовательской функцией, но не позволяет при вызове задать параметры пользовательской функции, например:

PHP:
function user_sort($x, $y, $param1)
{
    ....
}

usort($array, 'user_sort', $param)
есть ли какой-то более-менее красивый выход из ситуации?
 

dimagolov

Новичок
PHP:
function user_sort1 ($x, $y) { return user_sort($x, $y, 'abc'); }
function user_sort($x, $y, $param1)
{
    ....
}

usort($array, 'user_sort1');
еще можно просто глобальную переменную использовать
 

Balloon

Новичок
может и есть

Автор оригинала: .scu
более прямых методов нет ? :)
PHP:
function mySort($array, $params) {
	$GLOBALS['mysortOptions'] = $params;
	function myComparator($a, $b) {
		global $mysortOptions;
		// comparator implementation
	}
	
	usort($array, 'myComparator');
	
	unset($GLOBALS['mysortOptions']);
	
	return $array;
}
Код не совсем правильный, но поставленную задачу имхо решает.
 

mani13

Новичок
PHP:
<?php
	function mySort($a, $b, $param) {
		var_dump($a, $b, $param);
		return 0;
	}

	$arr = array(1, 2, 3);
	usort($arr, create_function('$a,$b', 'return mySort($a, $b, "ABC");'));
?>
P.S.: не верх краткости, конечно...
 

WP

^_^
Жжоте.
PHP:
class mysort
{
 public function callback($a,$b) {return !isset($this->desc)?strcmp($a,$b):strcmp($b,$a);}
}
$fruits = array('orange','apple','banana');
$mysort = new mysort;
$mysort->desc = TRUE;
usort($fruits,array($mysort,'callback'));
var_dump($fruits);
/*
array(3) {
  [0]=>
  string(6) "orange"
  [1]=>
  string(6) "banana"
  [2]=>
  string(5) "apple"
}
*/
 
Сверху