2012-11-13 76 views
1

我想通过时间戳职位名称排序“1357894278”在PHP排序多维数组由内阵列的关键

<?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 谢谢! 等待帮助

回答

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通过各种自定义比较函数。

+0

不输出工作伴侣:( – JackLB

+0

什么是输出? – irrelephant

+0

它首先显示了所有关于第一API和另一个API的结果。 – JackLB

1

我以前有过类似的问题。我有一个更复杂的结构。我最终创建了另一个数组作为我的“映射”,并将其用于排序/索引。

新的地图数组是一个非常简单的结构,只包含有关我的其他结构的必要信息,只是足够的信息来快速索引并快速排序。

我确定可能有其他解决方案,但这对我来说很合适,因为我有非常大的复杂结构,如果我没有额外的映射结构,那么迭代时将会更昂贵。这一切都归结于你计算你的时间成本,并根据你的数据类型的复杂性和大小来判断它是否会很贵或者不适合你。

+0

你能给我你的例子地图数组的。 因为我的工作API的结果,所以我不能通过任何索引名称来排序,如$ ans ['date']。 – JackLB

+1

你的情况如何,我做了什么类似于:Array([jobTitle1 ] => 0,[jobtitle2] => 1)'所以基本上它是一个索引数组,说明jobtite1实际上是原始数组中的项目0 – Greeso

+0

Wahab Mirjan thx帮助 但现在我得到了一个解决方案。在数组合并中出错。 – JackLB