連想配列の配列を列の値で並べ替える 質問する

連想配列の配列を列の値で並べ替える 質問する

この配列があるとします:

$inventory = array(

   array("type"=>"fruit", "price"=>3.50),
   array("type"=>"milk", "price"=>2.90),
   array("type"=>"pork", "price"=>5.43),

);

$inventoryの要素を価格で並べ替えて次の結果を取得したいと思います。

$inventory = array(

   array("type"=>"pork", "price"=>5.43),
   array("type"=>"fruit", "price"=>3.50),
   array("type"=>"milk", "price"=>2.90),

);

これどうやってするの?

ベストアンサー1

おっしゃる通り、あなたが探している機能はarray_multisort()

以下はマニュアルから直接抜粋し、あなたのケースに合わせて調整した例です。

$price = array();
foreach ($inventory as $key => $row)
{
    $price[$key] = $row['price'];
}
array_multisort($price, SORT_DESC, $inventory);

array_column()PHP 5.5.0 以降では、代わりに foreachを使用できます。

$price = array_column($inventory, 'price');

array_multisort($price, SORT_DESC, $inventory);

おすすめ記事