【问题标题】:Sort array starting with given value从给定值开始排序数组
【发布时间】:2010-08-18 20:06:09
【问题描述】:

我想从我设置的值开始对 php 数组进行排序

例子:

$array = array();
$array['test'] = 'banana';  
$array['test2'] = 'apple';  
$array['test3'] = 'pineapple';  
$array['test4'] = 'orange';  

我如何对其进行排序,以使“橙色”成为第一个结果,然后按字母顺序排序。

原来如此
橙色
苹果
香蕉
菠萝

对此的任何帮助将不胜感激。

【问题讨论】:

    标签: php


    【解决方案1】:

    您可以创建自己的自定义排序函数,然后使用 usort(或 uasort,如果您想保留您的数组键 - 感谢 cmets 中的 Isaac 提醒)使用它对您的数组进行排序:

    function sort_fruit($a, $b)
    {
      if ($a == $b) return 0;         // If the values are the same, usort expects 0 
      if ($a == "orange") return -1;  // $a is orange, $b is not -> $a comes first
      if ($b == "orange") return 1;   // $b is orange, $a is not -> $b comes first
      return strcmp($a, $b);          // ... otherwise, sort normally
    }
    
    usort($array, "sort_fruit");
    

    【讨论】:

    • 使用 uasort 保留键关联。
    【解决方案2】:

    这可能有点过头了,但我不知道有一种方法可以满足您的要求:

    <?php
    
    $old_array = array(
        1 => 'banana',
        2 => 'apple',
        3 => 'pineapple',
        4 => 'orange'
    );
    
    $search = 'orange';
    
    $new_array = array();
    
    if( ($key = array_search($search, $old_array)) !== FALSE)
    {
        $new_array[] = $search;
        unset($old_array[$key]);
    }
    
    $new_array = array_merge($new_array, asort($old_array));
    

    【讨论】:

      猜你喜欢
      • 2012-11-02
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-09
      相关资源
      最近更新 更多