PHP按字段名对多维数组进行排序

标签 php arrays sorting multidimensional-array

我已尝试调整此代码以用于对命名键/字段上的多维数组进行排序。该字段是一个整数,我需要将其从最小到最大排序。

function myCmp($a, $b)
{
    return strcmp($a["days"], $b["days"]);
}

uasort($myArray, "myCmp");

这按我的需要对数组进行了排序,但顺序错误。目前它从最大到最小排序,而不是使用自然顺序。我需要按自然顺序从小到大排序(例如,2 在 5、12 和 24 之前)。

最佳答案

strnatcmp()是你的 friend

例如(使用 php 5.3 闭包/anonymous function ):

<?php
$myArray = array( 'foo'=>array('days'=>2), 'bar'=>array('days'=>22), 'ham'=>array('days'=>5), 'egg'=>array('days'=>12) );
uasort($myArray, function($a, $b) { return strnatcmp($a["days"], $b["days"]); });

foreach($myArray as $k=>$v) {
  echo $k, '=>', $v['days'], "\n";
}

打印

foo=>2
ham=>5
egg=>12
bar=>22

关于PHP按字段名对多维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3636573/

相关文章:

PHP 缩略图图像生成器缓存 : How to set If-Last-Modified/Max-Age/Last-Modified HEADERS correctly in PHP?

php - 如何使用Join从另一个表中仅获取一条记录

python - 没有降维的numpy数组方向均值

python - 在 Python 中对对象进行排序

sorting - Solr - 如何基于子查询进行排序

php - Javascript对应的Jquery中如何绑定(bind)Onclick事件

python - Numpy数组、索引和卷积混淆

python - 确定二维数组中最长连续值范围的最快方法

c# - 获取表单的所有文本框,其名称按升序排列

php - 根据 ID 在 sql 查询中提供链接