-1

I am trying to sort my this array by the below array but I couldn't do it still if someone can guide me highly appreciated.

array to be sorted

in this array I have a element with ID the same ID is in the order array and that order array is in the order I want to sort this array.

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
        )

)

order

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

2 Answers2

2

Where arrayToSort is the array you want to sort and $order is the array you use to sort. This is not optimal, but it should work.

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

//added another equal sign to the if condtions

Unex
  • 1,747
  • 13
  • 17
-1

A simple foreach should do the job.

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

This will iterate through the order array, and pull out the values of the original array that have keys matching the values in the order array in the order they appear in the order array.

MuppetGrinder
  • 234
  • 1
  • 8