Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Функция сортировки массива в классе

Сообщения:  [1-10]   [11-14] 

 
 автор: sms-send   (27.06.2010 в 00:56)   письмо автору
 
   для: Тень&   (26.06.2010 в 21:52)
 

Я всего лишь исправил вариант автора на идентичный, но работающий.

ООПшно можно определить интерфейс Comparer и реализовывать его сколько угодно раз с нужными вариантами метода (обходясь без анонимных функций).

По предложенной автором версии не видно, чтобы его волновала эта проблема. Возможно ещё не дошёл до этой части, а возможно в этом классе действительно нужен единственный вариант сравнения.

  Ответить  
 
 автор: Тень&   (26.06.2010 в 21:52)   письмо автору
 
   для: sms-send   (26.06.2010 в 20:23)
 

Неприятность в том, что метод сравнения для сортировки как бы не относится к классу array_class. Не ООПшно. Поэтому тут должна быть только лямбда/анонимная функция.

  Ответить  
 
 автор: Trianon   (26.06.2010 в 20:43)   письмо автору
 
   для: sms-send   (26.06.2010 в 20:27)
 

пардон.. проглядел второй аргумент usort

  Ответить  
 
 автор: sms-send   (26.06.2010 в 20:27)   письмо автору
 
   для: Trianon   (26.06.2010 в 20:24)
 

Пробовал, всё прекрасно работает.

  Ответить  
 
 автор: Trianon   (26.06.2010 в 20:24)   письмо автору
 
   для: sms-send   (26.06.2010 в 20:23)
 

Вы же не пробовали запустить этот код, не так ли?

  Ответить  
 
 автор: sms-send   (26.06.2010 в 20:23)   письмо автору
 
   для: neokortex   (26.06.2010 в 18:10)
 

// <?php
class array_class {
    public 
$array_// массив с которым работаем
    
public $sort_by// параметр по которму сортируем массив
    
private function sort_function($a$b) {
         return 
strcmp($a[$this->sort_by], $b[$this->sort_by]);
    }
    
//// далее функция сортировки массива
    
public function sort_array() {
        
usort ($this->array_, array($this"sort_function"));
    }
};

  Ответить  
 
 автор: Trianon   (26.06.2010 в 19:04)   письмо автору
 
   для: neokortex   (26.06.2010 в 18:10)
 

дык ить контекст класса-то в обычной функции теряется...

  Ответить  
 
 автор: sim5   (26.06.2010 в 18:59)   письмо автору
 
   для: neokortex   (26.06.2010 в 18:33)
 

А что у вас за массив и что должно быть результатом сортировки? Кусочек массива покажите, и результат его сортировки.

  Ответить  
 
 автор: Тень&   (26.06.2010 в 18:45)   письмо автору
 
   для: neokortex   (26.06.2010 в 18:33)
 

Тогда http://ru.php.net/manual/en/function.create-function.php, но, чую, скоро там будет надпись "deprecated"

  Ответить  
 
 автор: neokortex   (26.06.2010 в 18:33)   письмо автору
 
   для: Тень&   (26.06.2010 в 18:29)
 

5.2.4 А универсального решения нет? Может логику изменить или так и придется все ручками все время прописывать?

  Ответить  

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования