[英]Sort array in array in array in PHP
我有這樣的數組:
$items = array(
[1] => array(
['Name'] =>"Item 1",
['Prices'] => array(
['Base price'] => 80.25,
['Discount'] => 5.50
)
),
[2] => array(
['Name'] =>"Item 2",
['Prices'] => array(
['Base price'] => 70.25,
['Discount'] => 4.50
)
)
);
如何按“基本價格”對$ items進行排序? 我希望具有相同結構的輸出數組的第一個元素的價格最低,最后一個元素的價格最高。
預期產量:
$items = array(
[1] => array(
['Name'] =>"Item 2",
['Prices'] => array(
['Base price'] => 70.25,
['Discount'] => 4.50
)
),
[2] => array(
['Name'] =>"Item 1",
['Prices'] => array(
['Base price'] => 80.25,
['Discount'] => 5.50
)
)
);
我不了解array_multisort()以及如何在我的情況下使用它。
這就是使用array_multisort
:
foreach ($items as $item) {
$sort[] = $item['Prices']['Base price'];
}
array_multisort($sort, SORT_ASC, $items);
就像Jan所說的那樣,您還可以使用usort
:
usort($items, function($a, $b) {
return $a['Prices']['Base price'] - $b['Prices']['Base price'];
});
我希望這有幫助。 我將usort()
與回調函數一起使用:
$arr = array(
array(
'foo' => 'bar',
'data' => array(
'basePrize' => 5
)
),
array(
'foo' => 'bar2',
'data' => array(
'basePrize' => 2
)
)
);
usort($arr, function($a, $b) {
if($a['data']['basePrize'] === $b['data']['basePrize']) {
return 0;
}
if($a['data']['basePrize'] > $b['data']['basePrize']) {
return 1;
}
return -1
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.