2012-11-13 75 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