按另一个数组排序数组

时间:2015-04-21 11:13:25

标签: php arrays sorting

我正在尝试通过下面的数组对我的数组进行排序,但如果有人可以引导我高度赞赏,我仍然无法做到这一点。

要排序的数组

在这个数组中,我有一个ID为ID的元素,顺序数组中的ID是相同的,并且该顺序数组的顺序是我要对这个数组进行排序。

Array
(
    [0] => Array
        (
            [id] => 13
            [packageName] => Tamil Channels
            [package_type] => channel
            [package_img_url] => Main Icon 304 X 237 - Tamil.png
            [package_img] => 537f25b823294-1400841656-Roku Main Icon 304 X 237 - Tamil.png
            [package_img_amg] => 1418122315-5486d44b568ec.png
            [package_img_amg_url] => dfgd
            [package_img_lyca] => 1426844718-550bec2e9cc58.png
            [package_img_lyca_url] => asdsad
            [Description] => Tamil Channels
            [location] => 
            [channels] => 
            [duration] => 0
            [currency] => 
            [amount] => 0.00
            [lastModified] => 0000-00-00 00:00:00
            [modifiedBy] => 0
            [sort] => 88
            [status] => 1
        )

    [1] => Array
        (
            [id] => 14
            [packageName] => Sinhala Channels
            [package_type] => channel
            [package_img_url] =>  Main Icon 304 X 237 - Sinhala.png
            [package_img] => 537f25ca655a8-1400841674-Roku Main Icon 304 X 237 - Sinhala.png
            [package_img_amg] => 1418122337-5486d461cd955.png
            [package_img_amg_url] => asdfsfsdf
            [package_img_lyca] => 1426844726-550bec36e7416.png
            [package_img_lyca_url] => sdfsdfsdf
            [Description] => Sinhala Channels
            [location] => 
            [channels] => 
            [duration] => 0
            [currency] => 
            [amount] => 0.00
            [lastModified] => 0000-00-00 00:00:00
            [modifiedBy] => 0
            [sort] => 77
            [status] => 1
        )

    [2] => Array
        (
            [id] => 15
            [packageName] => Malayalam Channels
            [package_type] => channel
            [package_img_url] =>  TV- 304  X 237.png
            [package_img] => 537efa627d6cc-1400830562-Malayalam TV- 304  X 237.png
            [package_img_amg] => 1418122391-5486d4974e6cc.png
            [package_img_amg_url] => 1418122391-5486d4974e6cc.png
            [package_img_lyca] => 1426844732-550bec3ca6c8a.png
            [package_img_lyca_url] => 1426844732-550bec3ca6c8a.png
            [Description] => Malayalam Channels
            [location] => 
            [channels] => 
            [duration] => 0
            [currency] => 
            [amount] => 0.00
            [lastModified] => 0000-00-00 00:00:00
            [modifiedBy] => 0
            [sort] => 4
            [status] => 1
        )

    [3] => Array
        (
            [id] => 16
            [packageName] => Nepali Channels
            [package_type] => channel
            [package_img_url] => Main Icon 304 X 237 - Nepali.png
            [package_img] => 537f291fdf4fe-1400842527-Roku Main Icon 304 X 237 - Nepali.png
            [package_img_amg] => 1418122398-5486d49ee13aa.png
            [package_img_amg_url] => 1418122398-5486d49ee13aa.png
            [package_img_lyca] => 1426844740-550bec446969f.png
            [package_img_lyca_url] => 1426844740-550bec446969f.png
            [Description] => Nepali Channels
            [location] => 
            [channels] => 
            [duration] => 0
            [currency] => 
            [amount] => 0.00
            [lastModified] => 0000-00-00 00:00:00
            [modifiedBy] => 0
            [sort] => 999
            [status] => 1
        )

    [4] => Array
        (
            [id] => 18
            [packageName] => Hindi Channels
            [package_type] => channel
            [package_img_url] => Main Icon 304 X 237 -Hindi.png
            [package_img] => 537f5436257ce-1400853558-Roku Main Icon 304 X 237 -Hindi.png
            [package_img_amg] => 1418122408-5486d4a885613.png
            [package_img_amg_url] => 1418122408-5486d4a885613.png
            [package_img_lyca] => 1426844747-550bec4bf2cf4.png
            [package_img_lyca_url] => 1426844747-550bec4bf2cf4.png
            [Description] => Hindi Channels
            [location] => 
            [channels] => 
            [duration] => 0
            [currency] => 
            [amount] => 0.00
            [lastModified] => 0000-00-00 00:00:00
            [modifiedBy] => 0
            [sort] => 6
            [status] => 1
        )

    [5] => Array
        (
            [id] => 19
            [packageName] => Cricket TV
            [package_type] => channel
            [package_img_url] => TV 336_210.PNG
            [package_img] => 5380357608752-1400911222-Cricket TV 336_210.PNG
            [package_img_amg] => 1418628785-548e8eb1bc740.png
            [package_img_amg_url] => 1418628785-548e8eb1bc740.png
            [package_img_lyca] => 1427200214-551158d6c6db7.png
            [package_img_lyca_url] => 1427200214-551158d6c6db7.png
            [Description] => Cricket TV
            [location] => 
            [channels] => 
            [duration] => 0
            [currency] => 
            [amount] => 0.00
            [lastModified] => 0000-00-00 00:00:00
            [modifiedBy] => 0
            [sort] => 3
            [status] => 1
        )

    [6] => Array
        (
            [id] => 22
            [packageName] => Special Programs
            [package_type] => special_program
            [package_img_url] => 1406617272-53d746b87d958.gif
            [package_img] => 1406617272-53d746b87d958.gif
            [package_img_amg] => 1418628774-548e8ea680b4e.png
            [package_img_amg_url] => 1418628774-548e8ea680b4e.png
            [package_img_lyca] => 1427200206-551158ce595bf.png
            [package_img_lyca_url] => 1427200206-551158ce595bf.png
            [Description] => Special Programs
            [location] => 
            [channels] => 
            [duration] => 0
            [currency] => 
            [amount] => 0.00
            [lastModified] => 0000-00-00 00:00:00
            [modifiedBy] => 0
            [sort] => 9
            [status] => 1
        )

    [7] => Array
        (
            [id] => 23
            [packageName] => Filipino Channels
            [package_type] => channel
            [package_img_url] => 1426852710-550c0b66d3f22.png
            [package_img] => 1426852710-550c0b66d3f22.png
            [package_img_amg] => 1426852710-550c0b66d42d4.png
            [package_img_amg_url] => 1426852710-550c0b66d42d4.png
            [package_img_lyca] => 1427200220-551158dc61a8a.png
            [package_img_lyca_url] => 1427200220-551158dc61a8a.png
            [Description] => Filipino Channels
            [location] => 
            [channels] => 
            [duration] => 0
            [currency] => 
            [amount] => 0.00
            [lastModified] => 0000-00-00 00:00:00
            [modifiedBy] => 0
            [sort] => 7
            [status] => 1
        )

    [8] => Array
        (
            [id] => 24
            [packageName] => African Channels
            [package_type] => channel
            [package_img_url] => 1427172483-5510ec83617f2.png
            [package_img] => 1427172483-5510ec83617f2.png
            [package_img_amg] => 1427172483-5510ec8361d78.png
            [package_img_amg_url] => 1427172483-5510ec8361d78.png
            [package_img_lyca] => 1427200225-551158e15c054.png
            [package_img_lyca_url] => 1427200225-551158e15c054.png
            [Description] => African Channels
            [location] => 
            [channels] => 
            [duration] => 0
            [currency] => 
            [amount] => 0.00
            [lastModified] => 0000-00-00 00:00:00
            [modifiedBy] => 0
            [sort] => 8
            [status] => 1
        )

)

订单

Array
(
    [0] => 14
    [1] => 13
    [2] => 24
    [3] => 19
    [4] => 18
    [5] => 16
    [6] => 15
    [7] => 22
    [8] => 23
)

2 个答案:

答案 0 :(得分:2)

其中arrayToSort是您要排序的数组,$ order是您用于排序的数组。这不是最佳的,但应该有效。

function sortArray($order, $arrayToSort) {
   $result = array();
   foreach($order as $value) {
      foreach($arrayToSort as $elem) {
          if($elem['id'] == $value) {
              $result[] = $elem;
              break;
          }
      }
   }
   return $result;
}

//为if condtions添加了另一个等号

答案 1 :(得分:-1)

一个简单的foreach应该做的工作。

$sortedArray = array();
foreach ($orderArray as $key=>$val){
  $sortedArray[] = $originalArray[$val];
}

这将遍历order数组,并按照它们在order数组中出现的顺序,拉出原始数组的值,这些数组的键与order数组中的值匹配。