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

Php 如何使用指定的值序列对关联数组进行排序?,php,Php,我想用指定的值序列对关联数组进行排序 $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

我想用指定的值序列对关联数组进行排序

$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")
))

结果:-

$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"));

您可以使用并传递一个比较函数来指定收入范围字符串的数值(即,如果“0-10M”是1,“10-100M”是2,“>1B”是5,那么您将得到“>1B”>“0-10M”)。

这不是一个有效的PHP数组。是的,这很好。我有另一个数组低于$arr=[数组(“公司”=>“a”,“收入范围”=>“100-250米”、阵列(“公司”=>“B”、“收入范围”=>“10-50米”)、阵列(“公司”=>“C”、“收入范围”=>“500米-1B”)、阵列(“公司”=>“D”、“收入范围”=>“50-100米”)、阵列(“公司”=>“E”、“收入范围”=>“1B”)、阵列(“公司”=>“F”、“收入范围”=>“1-10米”)、阵列(“公司”=>“F”、“收入范围”=>“0-1米”)];@MagikVishal更新了代码,这应该适用于您的第二个场景。无论谁否决了答案,请在评论部分提供解释,因为我想了解原因。我已对其进行了三次检查,以确保其满足要求。如果有有效的原因,例如使用不良做法,那么一个人可以学习n如果提供了信息,我将从中受益。当人们没有提供理由就投票否决时,这真的很令人不安。编写代码需要付出努力。如果有缺陷,我非常乐意接受更正,但当我不知道我的答案为什么被否决时,我不会。@MagikVishal请确认代码是否适用于您,如果是的话,如果您接受,我将不胜感激我的答案或投票赞成,如果它不工作的反馈将不胜感激。
<?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);