繁体   English   中英

PHP uksort()用于多个数组

[英]PHP uksort() for several arrays

我想为多个关联数组提供唯一的排序功能。

在各种PHP排序函数中,最好的候选者是uksort() ,( usort()是理想的选择,但它将数组键更改为数字index(!))。

例如(使用更简单的数组)

  function sorting_by_length_desc ($a, $b) 
  {
    return strlen($GLOBALS['arr'][$b]) - strlen($GLOBALS['arr'][$a]);
  }

  $arr = ('chandler' => 'bing', 'monica' => 'lewinsky');

  uksort($arr, 'sorting_by_length_desc');

将使$arr成为

  ('monica' => 'lewinsky', 'chandler' => 'bing');

而不影响按键。

那么如何对任何数组使用相同的排序函数,在代码的不同位置调用uksort() 例如$arr1$arr2 ,..., $arrn吗?
是否有必要使用另一个全局变量,将其数组名称分配给要排序的数组(在排序之前),并在排序函数中全局使用?

还必须有其他东西,清洁工,对吗?

您可以使用类似的通用比较功能:

function sorting_by_length_desc ($a, $b) {
        return strlen($b) - strlen($a);
}

uksort还会对键上的数组进行排序。 那是您要找的东西吗?

如果要对值进行数组排序,并保持键值关联,则可以使用uasort

您可以通过uksort()函数来实现

  $arr = array('chandler' => 'bing', 'monica' => 'lewinsky', 'name' => 'smallest one');

  uksort($arr, function($a, $b) {
    return strlen($a) - strlen($b);
  });

  $result = $arr;

结果(按数组键的最小字符串长度排序):

Array
    (
        [name] => smallest one
        [monica] => lewinsky
        [chandler] => bing
    )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM