我想按时间戳“1357894278”
对职位名称进行排序<?php
foreach( $jobs as &$job )
{
$cj_date[] = array( strtotime($job->date) => array( $job->title ));
}
foreach ($results['results'] as $result)
{
$in_date[] = array ( strtotime($result['date']) => array ($result['jobtitle']) );
}
$ans[] = array_merge($cj_date,$in_date);
foreach($ans as $a)
{
ksort($a);
print_r($a);
}
?>
通过运行此脚本,我得到了如下输出:
Array( [0] => Array
( [1352796106] => Array
( [0] => JobTitle_1 )
)
[1] => Array
( [1352745201] => Array
( [0] => JobTitle_2 )
)
[2] => Array
( [1357894278] => Array
( [0] => JobTitle_3 )
)
)
那么如何按职业标题排序1352796106,1352745201,1357894278 谢谢! 等待帮助
答案 0 :(得分:1)
试试这个:
function compare($a, $b) {
$ak = array_keys($a);
$bk = array_keys($b);
return ($ak[0] < $bk[0]) ? -1 : 1;
}
usort($ans, "compare");
var_dump($ans);
usort
按自定义比较功能排序。
答案 1 :(得分:1)
我有一段时间遇到过类似的问题。我有一个更复杂的结构。我最终创建了另一个数组作为我的'map',我用它来进行排序/索引。
新的地图数组是一个非常简单的结构,只包含有关我的其他结构的必要信息,只有足够的信息可以快速索引并快速排序。
我确信可能还有其他解决方案,但这对我有用,因为我有非常大的复杂结构,如果我没有那个额外的地图结构,那么迭代会更加昂贵。这一切都取决于你计算你的时间成本,并根据数据类型的复杂性和大小来确定它是否会对你来说是昂贵的。