0

I have an array of currency codes and their associated countries that looks like this:

$currency_list = array(
  "cad" => array("Canada"),
  "eur" => array("Austria", "Belgium", "Estonia"),
  "aed" => array("United Arab Emirates", "Dubai")
);

I am outputting them like this:

foreach (array_keys($currency_list) as $key) {
  foreach($currency_list[$key] as $value) {
  echo $key." ".$value;
  }
}

Which gives me:

"cad Canada", "eur Austria", "eur Belgium", "eur Estonia", "aed United Arab Emirates"

How can I sort my $currency_list array so that when I loop through it I get the results in alphabetical order of the country like this:

"eur Austria", "eur Belgium", "cad Canada", "eur Estonia", "aed United Arab Emirates"

Calico
  • 13
  • 1
  • You should check out http://stackoverflow.com/questions/2699086/sort-multi-dimensional-array-by-value – Erik Terwan Feb 11 '15 at 12:17
  • better use ksort implementation perhaps (for it naturally sorts by keys) instead of "sort": http://php.net/manual/en/function.ksort.php – serjoscha Feb 11 '15 at 12:20

2 Answers2

2
$sorted = array();
foreach ($currency_list as $currency => $countries) {
    foreach ($countries as $country) {
        $sorted[$country] = $currency;
    }
}

ksort($sorted);

print_r($sorted);  // do your loop here
deceze
  • 510,633
  • 85
  • 743
  • 889
0

Try this..

$currency_list = array(
  "cad" => array("Canada"),
  "eur" => array("Austria", "Belgium", "Estonia"),
  "aed" => array("United Arab Emirates", "Dubai")
);
foreach ($currency_list as $key => $value) {
    foreach ($value as $value1) {
        $newarray[$value1] = $key;
    }
}

ksort($newarray);
foreach($newarray as $key => $value)
{
echo $value." ".$key;
}

Result:eur Austriaeur Belgiumcad Canadaaed Dubaieur Estoniaaed United Arab Emirates
Deenadhayalan Manoharan
  • 5,436
  • 14
  • 30
  • 50