【问题标题】:Sort values from an array first based on another array首先根据另一个数组对数组中的值进行排序
【发布时间】:2018-03-16 16:55:43
【问题描述】:

我想首先根据基于另一个数组的顺序对值进行排序。

$countries = explode(',', 'AF,AL,DZ,AS,AD,FR,AO,AI,AQ,GB');
$popular   = explode(',', 'FR,GB');

我来自$countries 我希望$popular 中定义的值形成这样的数组:

$ordered = ['GB,FR,AF,AL,DZ,AS,AD,AO,AI,AQ']

谢谢

【问题讨论】:

  • 你需要为此编写自定义代码

标签: php arrays sorting foreach


【解决方案1】:

您可以使用array_mergearray_diff

在此处查看工作演示https://eval.in/873974

$countries = explode(',', 'AF,AL,DZ,AS,AD,FR,AO,AI,AQ,GB');
$popular   = explode(',', 'FR,GB');
sort($popular); // sort to manage order

// remove common element from $countries and merge with $popular
$ordered = array_merge($popular,array_diff($countries, $popular));     
echo "<pre>";
print_r($ordered);

【讨论】:

    【解决方案2】:

    试试这个代码

    <?php 
            $arr= array();
            $countries = explode(',', 'AF,AL,DZ,AS,AD,FR,AO,AI,AQ,GB');
            $popular   = explode(',', 'FR,GB');
            $total_popular = count($popular);
            $total_countries = count($countries);
    
            for ($i=0; $i < $total_popular; $i++) { 
                if (in_array($popular[$i], $countries)) {
                    $arr[]=$popular[$i];
                }
            }
            for ($j=0; $j < $total_countries; $j++) { 
                if (! in_array($countries[$j], $arr)) {
                    $arr[]=$countries[$j];
                }
            }
            echo "<pre>";
            print_r($arr);
    
            ?>
    

    你想要的代码输出是

    【讨论】:

      猜你喜欢
      • 2022-12-18
      • 2015-08-05
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多