Tom: 2-dimensionales Array alphabetisch sortieren

Beitrag lesen

Hello,

$test = array(array( 'plainName' => 'Ägypten',
                     'htmlName' => 'Ägypten',
                     'urlName' => 'Aegypten'
                   ),
              array( 'plainName' => 'Libyen / Libysch-Arabische Dschamahirija',
                     'htmlName' => 'Libyen / Libysch-Arabische Dschamahirija',
                     'urlName' => 'Libyen-oder-Libysch-Arabische-Dschamahirija'
                   ),
              array( 'plainName' => 'Algerien',
                     'htmlName' => 'Algerien',
                     'urlName' => 'Algerien'
                   ),
              array( 'plainName' => 'Marokko',
                     'htmlName' => 'Marokko',
                     'urlName' => 'Marokko'
                   )
             );

Du machst Dir das Leben zu schwer.

nimm die Korrespondenz nicht in die Knoten, sondern in den Schlussindex

Und gewöhn Dir für die Darstellung eine andere Schreibweise an:

$_table['plainName'][1] = 'Ägypten';
$_table['plainName'][2] = 'Libyen / Libysch-Arabische Dschamahirija';
$_table['plainName'][3] = 'Algerien';
$_table['plainName'][4] = 'Marokko';

$_table['htmlName']['1'] = 'Ägypten';
$_table['htmlName']['2'] = 'htmlName' => 'Libyen / Libysch-Arabische Dschamahirija';
$_table['htmlName']['3'] = 'htmlName' => 'Algerien';
$_table['htmlName']['4'] = 'htmlName' => 'Marokko';

$_table['urlName']['1'] = 'Aegypten';
$_table['urlName']['2'] = 'Libyen-oder-Libysch-Arabische-Dschamahirija';
$_table['urlName']['3'] = 'urlName' => 'Algerien';
$_table['urlName']['4'] = 'Marokko';

Nun kannst Du nach jeder Spalte einfach mit

natcasesort($_table[$spaltenname]);

sortieren und dann die Spalte mit

foreach($_table[$spaltenname] as $key => val)
{
  echo $_table['plainName'][$key]."<br />";
  echo $_table['htmlName'][$key]."<br />";
  echo $_table['urlName']['key']."<br />";
}

anzeigen lassen.

Die drei Zeilen innen kann man auch noch gegen ein

foreach(array_keys($_table) as $fieldname)
  {
    echo $_table[$fieldname][$key]."<br />";
  }

austauschen.

Also:

foreach($_table[$spaltenname] as $key => val)
{
  foreach(array_keys($_table) as $fieldname)
  {
    echo $_table[$fieldname][$key]."<br />";
  }
}

Ich habe es jetzt nicht laufen lassen, könnte also noch ein Typo drinstecken...

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau