2012-03-30 4 views
0

У меня есть класс, который устанавливает значения в $ this-> properties внутри метода attach. Я сократить код здесь ради простоты:Как отсортировать этот массив по приоритету

<?php 
class Event 
{ 
    protected $properties = array(); 

    public function attach($event_name, $context, $event, $callback, $priority) 
    { 
     $this->properties [$event_name] = array(
       $context, 
       $event, 
       $callback, 
       $priority, 
     ); 
    } 

    public function dispatchAll($context = '0') 
    { 
     foreach($this->properties as $p) { 
      if($p[0] == $context) { 
       $this->dispatch($p[1]); 
      } else { 
       continue; 
      } 
     } 
    } 

    public function dispath($event_name) 
    { 
     // implentation not necessary for this question 
    } 
} 

Что мне нужно для сортировки $this->properties в «контексте, приоритет», так что я могу запустить код, соответствующий контекст моего приложения в порядке господствующее ,

пыльника на var_dump из всего 3 заданных свойств:

array(3) { 
    ["StartUp"]=> 
    array(4) { 
    [0]=> 
    string(1) "1" 
    [1]=> 
    string(7) "StartUp" 
    [2]=> 
    array(3) { 
     [0]=> 
     string(9) "Bootstrap" 
     [1]=> 
     string(7) "startup" 
     [2]=> 
     array(2) { 
     [0]=> 
     int(1) 
     [1]=> 
     object(Event)#6 (4) { 
      ["name":protected]=> 
      NULL 
      ["target":protected]=> 
      NULL 
      ["parameters":protected]=> 
      *RECURSION* 
      ["result":protected]=> 
      NULL 
     } 
     } 
    } 
    [3]=> 
    int(0) 
    } 
    ["View"]=> 
    array(4) { 
    [0]=> 
    string(1) "1" 
    [1]=> 
    string(4) "View" 
    [2]=> 
    array(2) { 
     [0]=> 
     string(9) "Bootstrap" 
     [1]=> 
     string(4) "view" 
    } 
    [3]=> 
    array(1) { 
     [0]=> 
     object(Event)#6 (4) { 
     ["name":protected]=> 
     NULL 
     ["target":protected]=> 
     NULL 
     ["parameters":protected]=> 
     *RECURSION* 
     ["result":protected]=> 
     NULL 
     } 
    } 
    } 
    ["ShutDown"]=> 
    array(4) { 
    [0]=> 
    string(1) "3" 
    [1]=> 
    string(8) "ShutDown" 
    [2]=> 
    array(2) { 
     [0]=> 
     string(9) "Bootstrap" 
     [1]=> 
     string(8) "shutdown" 
    } 
    [3]=> 
    array(1) { 
     [0]=> 
     object(Event)#6 (4) { 
     ["name":protected]=> 
     NULL 
     ["target":protected]=> 
     NULL 
     ["parameters":protected]=> 
     *RECURSION* 
     ["result":protected]=> 
     NULL 
     } 
    } 
    } 
} 
+1

Не могли бы вы разместить дамп '$ properties'? – F21

+0

Я включил var_dump рядом с вопросом –

ответ

0

usort() позволяет сортировать массив по указанному пользователю функции.

В качестве альтернативы, если массив заполнен из базы данных, вы всегда можете использовать ORDER BY в запросе, чтобы вернуть элементы в том порядке, в котором вы хотите.

+0

Я уже пробовал usort(), но без успеха ... на самом деле с большим количеством других вариантов. Вот почему я опубликовал вышеприведенный заголовок ... «Потому что у них было много попыток ... Я чувствую, что я новичок ... hehehe –

Смежные вопросы