PHP: вызов пользовательской функции сортировки из объекта? В PHP есть такая функция:bool usort ( array &array, callback cmp_function )
Ей вторым параметром передаётся имя функции, которая будет принимать очередную пару значений и сравнивать их.
Есть обычный класс PHP:namespace MyProj;
class Test {
public function sortDir($a,$b)
{
if(is_dir($a['path']) && !is_dir($b['path'])) return -1;
if(!is_dir($a['path']) && is_dir($b['path'])) return 1;
if($a['name']$b['name']) return 1; else return 0;
}

public function getList()
{
$dir[0] = array('path' => '/home/www', 'name' => 'www');
$dir[1] = array('path' => '/home/www/css', 'name' => 'css');
$dir[2] = array('path' => '/home/www/test.txt', 'name' => 'test.txt');
$dir[3] = array('path' => '/home/www/css/main.css', 'name' => 'main.css');

usort($dir, 'sortDir');
}
}
$obj = new Test();
$obj->getList();
Вот как правильно вызвать usort($dir, 'sortDir') в одной из последних строк? Какие варианты не пробовал, всегда выдаёт:Warning: usort() expects parameter 2 to be a valid callback, function 'sortDir' not found or invalid function name

21 Авг 2019 в 07:10
242 +1
0
Ответы
1

Для вызова пользовательской функции сортировки из объекта в PHP, вам нужно передать callback в виде массива, где первым элементом будет имя объекта, а вторым - имя метода.

В вашем случае, вместо строки 'sortDir', вы можете использовать массив с объектом и именем метода:

usort($dir, array($this, 'sortDir'));

Таким образом, вы передаете метод 'sortDir' объекта $this в качестве callback функции для сортировки массива $dir.

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир