如何使用指定的值序列对关联数组进行排序?

I want to sort associative array with specified sequence of values

$arr=array(array("company"=>"A", "revenue_range"=>"10-100M"),
      array("company"=>"B", "revenue_range"=>"0-10M"),
      array("company"=>"C", "revenue_range"=>"10-100M"),
      array("company"=>"D", "revenue_range"=>"100M-1B"),
      array("company"=>"E", "revenue_range"=>">1B"),
     array( "company"=>"F", "revenue_range"=>"0-10M")

);

Result:-

$arr=array(array("company"=>"B", "revenue_range"=>"0-10M"),
       array( "company"=>"F", "revenue_range"=>"0-10M"),
      array("company"=>"A", "revenue_range"=>"10-100M"),
      array("company"=>"C", "revenue_range"=>"10-100M"),
      array("company"=>"D", "revenue_range"=>"100M-1B"),
      array("company"=>"E", "revenue_range"=>">1B"));

You can use usort and pass a comparison function that assigns the revenue_range strings numeric values (i.e. if "0-10M" is 1 and "10-100M" is 2, ... and ">1B" is 5, then you end up with ">1B" > "0-10M").

<?php
    $arr = array( 
        array("company"=>"A", "revenue_range"=>"100 - 250M"), 
        array("company"=>"B", "revenue_range"=>"10 - 50M"), 
        array("company"=>"C", "revenue_range"=>"500M - 1B"), 
        array("company"=>"D", "revenue_range"=>"50 - 100M"), 
        array("company"=>"E", "revenue_range"=>">1B"), 
        array("company"=>"F", "revenue_range"=>"1 - 10M"), 
        array("company"=>"G", "revenue_range"=>"0 - 1M") 
        ); 
    $order= array("0 - 1M", "1 - 10M", "10 - 50M", "50 - 100M", "100 - 250M", "250 - 500M", "500M - 1B", ">1B");
    $order_by=array_flip($order);
    usort($arr, function($a, $b) use($order_by) {
        return $order_by[$a["revenue_range"]] - $order_by[$b["revenue_range"]];
    });
    echo "<pre>";
    print_r($arr);