<?php
function sort_2D_hash($hash, $sortKey, $sortMethod = SORT_REGULAR) {

    /*
        Fehlerprüfungen
    */

    $sortAllowed=array(
        SORT_REGULAR,
        SORT_NUMERIC,
        SORT_STRING,
        SORT_LOCALE_STRING,
        SORT_NATURAL,
        ( SORT_STRING | SORT_FLAG_CASE ),
        ( SORT_NATURAL | SORT_FLAG_CASE )
    );

    if (! is_array($hash) ) {
         trigger_error(' function : sort_2D_hash : Es wurde kein Array übergeben', E_USER_ERROR);
         exit;
    }

    $gueltig = true;
    $originalKeys = array_keys($hash);

    foreach ( $originalKeys as $key) {
        if ($gueltig and 'string' != gettype($sortKey) ) {
            trigger_error(' function : sort_2D_hash : Einer der Schlüssel des Hashes (' . $key . ') ist kein String. Die Funktion sort_2D_hash ist nicht verwendbar.', E_USER_NOTICE);
            $gueltig = false;
        }
    }


    if ( ! isset( $hash, $sortKey ) ) {
         trigger_error(' function : sort_2D_hash : Der Sortierschlüssel (' . $sortKey . ') existiert nicht im Hash', E_USER_NOTICE);
         return false;
    }

    if ( ! in_array( $sortMethod, $sortAllowed, 1 ) ) {
         trigger_error(' function : sort_2D_hash : Die übergebene Sortiermethode (' . $sortMethod . ') ist ungültig', E_USER_ERROR);
         exit;
    }


    /*
        Aktion
    */

    foreach($originalKeys as $key) {  $hilfsArray[$key] = $hash[$key][$sortKey];  }

    asort ( $hilfsArray, $sortMethod );
    $returnHash=array();

    foreach(array_keys($hilfsArray) as $key) { $returnHash[$key] = $hash[$key];  }

    return $returnHash;
}