2016-03-11 140 views
2

我有數組是這樣的:如何按照PHP中的另一個數組對數組進行排序?

Array(
     [06:30 PM] => 2 
     [03:00 AM] => 3 
     [08:00 PM] => 4 
    ) 

所以我用uksort排序的關鍵和數組等進行排序:

Array(
     [03:00 AM] => 3 
     [06:30 PM] => 2 
     [08:00 PM] => 4 
) 

和代碼我用的是:

uksort($arr, function($a, $b) { 
      return (strtotime(date('H:i',strtotime($a))) > strtotime(date('H:i',strtotime($b)))); 
     }); 

這個數組有時間的鍵和值的計數value.Now,我有另一個數組,其中包含上述鍵的值。

Array 
     (
      [1] => Array 
       (
        [0] => Default 
        [1] => BHU 
       ) 

      [2] => Array 
       (
        [0] => Default 
        [1] => HOT 
        [2] => COLD 
       ) 

      [3] => Array 
       (
        [0] => Default 
        [1] => Test 
        [2] => Test1 
        [3] => Test2 
       ) 
     ) 

現在,我要按照上述排序的數組這個數組也進行排序。我怎樣才能做到這一點?

感謝

+0

這不是一個好方法,我認爲你想先在鍵值中設置值,而不是計數值,而不是對它進行排序。否則,您將如何按照每個時間對值進行精確排序(您認爲這是關鍵) – jilesh

回答

1

首先,你寫的代碼可以簡化爲

uksort($arr, function($a, $b) { 
    return (strtotime($a) > strtotime($b)); 
}); 

要知道答案,這將是混亂的,使代碼爲您的陣列結構。

我會建議製作下面的結構,然後用你寫的代碼進行排序,然後用我所展示的小改進。下面

檢查,

Array 
     (
      [06:30 PM] => Array 
       (
        [0] => Default 
        [1] => BHU 
       ) 

      [03:00 AM] => Array 
       (
        [0] => Default 
        [1] => HOT 
        [2] => COLD 
       ) 

      [08:00 PM] => Array 
       (
        [0] => Default 
        [1] => Test 
        [2] => Test1 
        [3] => Test2 
       ) 
     ) 
在這個例子中
1
<?php 

$arr = array(
     '06:30 PM' => 2, 
     '03:00 AM' => 3, 
     '08:00 PM' => 4, 
    ); 

$arr2 = array(
      '1' => array(
        '0' => 'Default', 
        '1' => 'BHU' 
       ), 

      '2' => array(
        '0' => 'Default', 
        '1' => 'HOT', 
        '2' => 'COLD', 
       ), 

      '3' => array(
        '0' => 'Default', 
        '1' => 'Test', 
        '2' => 'Test1', 
        '3' => 'Test2', 
       ), 
     ); 

$arr3 = array_combine(array_keys($arr), $arr2); 

uksort($arr3, function($a, $b) { 
      return (strtotime(date('H:i',strtotime($a))) > strtotime(date('H:i',strtotime($b)))); 
     }); 

echo"<pre>"; 
print_r($arr3); 
?> 

這裏你的第一個數組中第一次使用array_keys它將把你的密鑰爲值,比你的另一陣列結合它它,你將使用array_combine在array_combine它會得到第一陣列值爲鍵和第二陣列值值,比排序的數組作爲每個鍵 有關詳情,請將把此鏈接:

http://php.net/manual/en/function.array-combine.php

http://php.net/manual/en/function.array-keys.php

相關問題