如何按pos
属性对此数组进行排序,即使键(name, store_id, product etc.
)
[Attributes] => Array
(
[name] => Array
(
[pos] => 30
)
[store_id] => Array
(
[pos] => 10
)
[product] => Array
(
[pos] => 20
)
)
编辑:性能当然很重要。
您可以使用
uasort()
来定义排序逻辑并维护关联索引。请注意,它会更改您的原始数组,并且仅返回基于成功的布尔值。
uasort($your_array, function($a, $b) {
return $a['pos'] > $b['pos'];
});
我的示例适用于>= PHP 5.3 ,但对于旧版本,您也可以使用普通的比较函数。
有关详细信息,请参阅uasort()
文档。
看看 PHP 函数array_multisort
。
http://php.net/manual/en/function.array-multisort.php
注释中有一个示例函数,对您来说应该没问题:
function array_orderby()
{
$args = func_get_args();
$data = array_shift($args);
foreach ($args as $n => $field) {
if (is_string($field)) {
$tmp = array();
foreach ($data as $key => $row)
$tmp[$key] = $row[$field];
$args[$n] = $tmp;
}
}
$args[] = &$data;
call_user_func_array('array_multisort', $args);
return array_pop($args);
}
// $dataArray is the array that contains your data
$sorted = array_orderby($dataArray, 'pos', SORT_DESC);