2016-11-27 64 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

相关问题