2016-11-27 2 views
-1

모든 위치가 객체 인 배열이 있습니다. 각 객체에는 "order"속성이 있으며이 속성으로 배열을 정렬하려고합니다.배열 클래스를 주문하는 가장 좋은 방법은 무엇입니까?

가장 좋은 방법은 무엇입니까?

나는 약 array_multisort을 보았지만 위치가 객체이고 배열이 아니기 때문에 이것이 작동하지 않는다고 생각합니다.

+0

당신은 우리에게 당신의 어레이와 당신에게 필요한 O/P를 보여줄 수 있습니까? – Tiger

답변

0

당신은 그런 식으로 작업을 수행 할 수 있습니다

<?php 
class OrderedItem 
{ 
    public $title; 
    public $order; 

    public function __construct($title, $order) 
    { 
     $this->title = $title; 
     $this->order = $order; 
    } 
} 

$items = [ 
    new OrderedItem('Title 1.2', 1), 
    new OrderedItem('Title 3', 3), 
    new OrderedItem('Title 4', 4), 
    new OrderedItem('Title 1.1', 1), 
    new OrderedItem('Title 2', 2), 
]; 

usort($items, function (OrderedItem $i1, OrderedItem $i2) { 
    return ($i1->order < $i2->order) ? -1 : 1; 
}); 

을 결과, $items 배열은 다음과 같습니다 귀하의 경우 '순서'속성 인 경우

Array 
(
    [0] => OrderedItem Object 
     (
      [title] => Title 1.1 
      [order] => 1 
     ) 

    [1] => OrderedItem Object 
     (
      [title] => Title 1.2 
      [order] => 1 
     ) 

    [2] => OrderedItem Object 
     (
      [title] => Title 2 
      [order] => 2 
     ) 

    [3] => OrderedItem Object 
     (
      [title] => Title 3 
      [order] => 3 
     ) 

    [4] => OrderedItem Object 
     (
      [title] => Title 4 
      [order] => 4 
     ) 

) 

private 정적 방법을 만들 수 있습니다 객체 클래스 내에서 'order'속성을 비교합니다. 공식 문서에서 예제를 찾는 방법을 찾을 수 있습니다 : http://php.net/manual/en/function.usort.php#example-5639

관련 문제