simplecontent

PHP Snippets und Beispiele

Inhaltsverzeichnis A-Z Register
Beispiel ausführen

Array Sortierung (Beispiel 2)

Eine spezielle Sortierreihenfolge vorgeben

Wie Beispiel 1, nur jetzt als Klasse realisiert, auch um den Einsatz von global unnötig zu machen. Das PHP Code Beispiel:
<?php

class SortByArray
{
 var 
$order 1;
 function 
SortByArray($arr)
 {
    
$this->map $arr;
 }

 function 
Sort($a)
 {
    
usort($a, array($this,'Compare'));
    return 
$a;
 }

function 
Compare($a,$b)
{
    
$map $this->map;
    
$order $this->order;

    
$a2use preg_replace('/[_0-9]*$/','',$a);
    
$b2use preg_replace('/[_0-9]*$/','',$b);

    
$na array_search($a2use$map);
    
$nb array_search($b2use$map);


    
// wenn nicht im "Ordnungsarray" an das Ende

    
if ($na === false && $nb === false) {
        return 
strcasecmp($a$b);
    }

    if (
$na === false) {
        return 
$order;
    }

    if (
$nb === false) {
        return -
$order;
    }




   if (
$na == $nb) {
    return 
strcasecmp($a$b);
   }
   return (
$na $nb) ? -1;
 }
/* END CLASS */

$a = array(
 
'd_2',
 
'c_1',
 
'd_2',
 
'd_2',
 
'd_1',
 
'a_1',
 
'd_3_2',
 
'A',
 
'X',
 
'a',
 
'b_2',
 
'c_2',
 
'd_3_1',
 
'b_1',
);


$map = array(
 
'd',
 
'b',
 
'c',
 
'a',
);

$o = new SortByArray($map);
$c $o->Sort($a);
echo 
join('<br>'$c);



?>

Dieses PHP Snippet soll in erster Linie als Beispiel und Anregung für eigene Bemühungen dienen.
Gerne darf man es für Projekte aller Art benutzen.
Möchte jemand das Snippet also solches in ähnlicher oder anderer Form veröffentlichen ist ein kleiner Hinweis auf simplecontent.net nicht zuviel verlangt oder Herr Koch?
Für die Abwesenheit von Fehlern kann natürlich keine Gewähr gegeben werden.