php - sort array on clothing sizes (multidimensional array) -


my array looks this:

    array      (      [0] => array     (         [id] => 613         [kleur] => royalblauw/wit         [maat] =>  maat xl         [voorraad] => 100         [sort] => 0         [prijs] => 4.1320     )  [1] => array     (         [id] => 614         [kleur] => royalblauw/wit         [maat] =>  maat xxl         [voorraad] => 100         [sort] => 1         [prijs] => 4.1320     )  [2] => array     (         [id] => 620         [kleur] => zwart/wit         [maat] =>  maat xl         [voorraad] => 100         [sort] => 2         [prijs] => 4.1320     )         etc.etc. 

what want sort array 'maat' (size). can see there multiple entries same 'maat'.

i've been trying hours now, still not result. ofcourse i've been looking @ stackoverflow, too. have until now.

functions:

function cmp($a, $b) {  $sizes = array( "116" => 0, "128" => 1, "140" => 2, "152" => 3, "164" => 4, "xxs" => 5, "xs" => 6, "s" => 7, "m" => 8, "l" => 9, "xl" => 10, "xxl" => 11, "xxxl" => 12, "xxxxl" => 13, "xxxxxl" => 14 );  $asize = $sizes[$a]; $bsize = $sizes[$b];  if ($asize == $bsize) {     return 0; }  return ($asize > $bsize) ? 1 : -1;  } function aasort (&$array, $key) {     $sorter=array();     $ret=array();     reset($array);     foreach ($array $ii => $va) {         $sorter[$ii]=$va[$key];     }     uasort($sorter, "cmp");     foreach ($sorter $ii => $va) {         $ret[$ii]=$array[$ii];     }     $array=$ret; } 

and calling function aasort:

aasort($maatkleur_array,"maat"); 

please can me. hope it's clear want achieve.

you want sort array of arrays. parent array don't have (named) key. uasort perserves key wich don't want in case use usort in stead:

error_reporting(e_all); ini_set('display_errors','on');  function cmp($a, $b) {      $sizes = array('s'=>0,'m'=>'1','l'=>2,'xl'=>3);      if ($sizes[$a['maat']] == $sizes[$b['maat']]) {         return 0;     }     return ($sizes[$a['maat']] < $sizes[$b['maat']]) ? -1 : 1; }    $input = array( array('id'=>1,'kleur'=>'blauw','maat'=>'xl'), array('id'=>2,'kleur'=>'blauw','maat'=>'m'), array('id'=>1,'kleur'=>'blauw','maat'=>'s'), array('id'=>2,'kleur'=>'blauw','maat'=>'m'), array('id'=>3,'kleur'=>'blauw','maat'=>'l') );  usort($input, "cmp");  print_r($input); 

Comments