簡體   English   中英

在PHP中的數組中對數組進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM