Links in einer Kategorie nach Wert sortieren

Hallo zusammen,

hab mir ein Script zusammengebastelt, das die Links in einer Kategorie nach den Werten der Variable auf die sie verweisen sortiert.
Am Beispiel der in IP-Symcon >= 4.0 verfügbaren Kern Instanz Location.
Es sortiert die Links aufsteigend nach der Uhrzeit der Events (logisch).
Die Variablen werden immer bei Sonnenaufgang (wenn ich die Doku richtig verstanden hab) aktualisiert. Hab dann noch ein Ereignis auf die Variablenaktuealisierung des Sonnenaufgangs gesetzt.

Für alle die’s interssiert:


<?
# es sollen die links einer kategorie nach ihrem wert sortiert werden ----------

# Links einlesen und in ein array schreiben ------------------------------------
$ObjectID = 23315;  # $ObjectID beinhaltet nur Links zu den Variablen in der LocationControl
$Objects = IPS_GetChildrenIDs($ObjectID);

$i = 0;
foreach ($Objects as $CurrentObjectID)
        {
        $i = $i+1;
        $Object = IPS_GetObject($CurrentObjectID);
        if ($Object['ObjectType'] == 6     /* 6 = Link*/){
        /*auflisten*/
        #print_r($Object);
        $link = IPS_GetLink($CurrentObjectID);
        #print_r($link);
        $varID = $link['TargetID'];
        #echo $varID."
";
        $linkID = $link['LinkID'];
        #echo $linkID."
";
        $varVal = getvalue($link['TargetID']);
        #echo $varVal."
";
        #echo date("D d.m.Y H:i",$varVal)."

";
        #$LocationControlZeiten[$i] = array();
        $LocationControlZeiten[$i] = array("TargetID"=>$varID,
                                                    "Value"=>$varVal,
                                                    "ValueH"=>date("d.m. Y H:i",$varVal),
                                                    "LinkID"=>$linkID
                                                    );
        }
}

    #print_r($LocationControlZeiten);
    #echo $LocationControlZeiten[1]['Value']."
";
    #echo date("d.m. Y H:i",$LocationControlZeiten[1]['Value']);


# http://www.php-kurs.com/arrays-mehrdimensional.htm ---------------------------
# Die Werte alle in kleinschreibung umwandeln ... -------
foreach ($LocationControlZeiten as $nr => $inhalt)
{
    $TargetID[$nr]  = strtolower( $inhalt['TargetID'] );
    $Value[$nr]   = strtolower( $inhalt['Value'] );
    $ValueH[$nr] = strtolower( $inhalt['ValueH'] );
     $LinkID[$nr] = strtolower( $inhalt['LinkID'] );
}
# und jetzt sortieren -----------------------------------
array_multisort($Value, SORT_ASC, $LocationControlZeiten);

    #echo "hier beginnt das ergebnis von multisort 
";
    #print_r($LocationControlZeiten);
    
# jetzt noch den Links die Sortiernummer geben ---------------------------------
$count = count($LocationControlZeiten);

for ($i = 0; $i < $count; $i++) {
    $ObjectPosition = $i + 1 ."0";
    #echo $ObjectPosition."
";
    If($LocationControlZeiten[$i])
        {
            #echo "position ".$ObjectPosition." LinkID ".$LocationControlZeiten[$i]['LinkID']."
";
            IPS_SetPosition($LocationControlZeiten[$i]['LinkID'], $ObjectPosition);
        }
}

?>

Sicher gibts hier noch PHP-Gurus die das Script auf einen 3-Zeiler oder so optimieren können. An diejenigen die’s können und Zeit haben, bitte optimieren und posten.