php - 如果数组是多维的,如何按第一个值对数组进行排序?
问题描述
下面创建一个多维数组,其中 date 和 id 是对对象:
if( $queryPosts->have_posts() ):
$dateOrdered = [];
while ( $queryPosts->have_posts() ) : $queryPosts->the_post();
$id = $post->ID;
$date = usp_get_meta(false, 'usp-custom-80');
array_push($postOrdered, $id);
$dateOrdered[] = array("date"=>$date, "id"=>$id);
endwhile;
endif;
然后我需要运行类似下面的东西来按日期排序,然后有一个按日期排序的列表发布ID
function custom_sort_dt($a, $b) {
return strtotime($a) - strtotime($b);
}
usort($dateOrdered, "custom_sort_dt");
print_r($dateOrdered);
这是 print_r,日期未排序,ID 也未排序
Array ( [0] => Array ( [date] => 7-12-2018 [id] => 127902 ) [1] => Array ( [date] => 19-12-2018 [id] => 127982 ) [2] => Array ( [date] => 6-12-2018 [id] => 127987 ) [3] => Array ( [date] => 13-12-2018 [id] => 127899 ) [4] => Array ( [date] => 24-11-2000 [id] => 127891 ) [5] => Array ( [date] => 13-11-2018 [id] => 127867 ) [6] => Array ( [date] => 25-11-2018 [id] => 127869 ) [7] => Array ( [date] => 5-12-2018 [id] => 127990 ) [8] => Array ( [date] => 5-12-2018 [id] => 127992 ) [9] => Array ( [date] => 18-12-2018 [id] => 128009 ) [10] => Array ( [date] => 26-12-2018 [id] => 128011 ) [11] => Array ( [date] => 21-12-2018 [id] => 128015 ) [12] => Array ( [date] => 27-12-2018 [id] => 128005 ) [13] => Array ( [date] => 12-11-2018 [id] => 127999 ) [14] => Array ( [date] => 7-12-2018 [id] => 127994 ) [15] => Array ( [date] => 21-12-2018 [id] => 127996 ) [16] => Array ( [date] => 2-6-2015 [id] => 128019 ) )
解决方案
只需更改您的custom_sort_dt
功能以查看子键:
function custom_sort_dt($a, $b) {
return strtotime($a['date']) - strtotime($b['date']);
}
推荐阅读
- capitalization - 你如何在javascript中将整个单词大写?
- function - 是否有可能在 PhpStorm 项目中找到未使用的功能(程序)
- javascript - 通过 JS 为 .less 样式表设置 href
- java - 抛出 ConstraintViolationException 时如何获取经过验证的字段名称而不是 arg0
- vue.js - 如何在 vue.js 中停止执行?
- c# - 需要知道如何在 Xamarin.iOS 中杀死后台进程
- node.js - Node.js API 没有返回任何东西(没有错误)
- php - 带有空字符串的 WHERE 子句不返回任何行
- python - 如何使用 24 小时时间序列数据作为预测特征
- matlab - OCTAVE:加载和处理多个文件(32 个文件)