在php中对对象的多维数组进行排序


Sorting multidimensional array of objects in php

我有一个数组,如下所示:

$myArray(
'totals' => array(
     Entity'Total,
     Entity'Total
     ...
)
'subtotals' => array(
     Entity'Total,
     Entity'Total
     ...
)
)

我想知道如何根据Total类对象的字段对对象数组的总计和小计进行排序。

我尝试了一些与usort有关的东西,但没有成功。这将返回未排序对象的重复数组。

  uasort($myArray, function($a, $b){
                    foreach($a as $adata) {
                       foreach($b as $bdata){
                        if ($adata->getmaxTotal() > $bdata->getmaxTotal())
                            return 1;
                        else
                            return 0;
                      }
                    }
            });

array_multsort可以同时对多个数组进行排序。但没有带回调的模拟。所以你需要创建一个新的数组,这个数组可以用这个函数排序。

for ($i = 0; $i < 10; $i++)
    {
    $a[$i] = new stdClass();
    $a[$i]->id = $i;
    $a[$i]->property = $i % 4;
    }
for ($i = 0; $i < 10; $i++)
    {
    $b[$i] = new stdClass();
    $b[$i]->id = $i;
    $b[$i]->property = $i % 3;
    }
// creating temporary array
$c = array_map(function ($item)
    { return $item->property; }, $a);
array_multisort($c, $a, $b);
var_dump($a, $b);