Benutzerdefinierte Sortierung (Beispiel 2)

Eine spezielle Sortierreihenfolge vorgeben

Weitere Beispiele

Beispiel ausführen
Wie Beispiel 1, nur jetzt als Klasse realisiert, auch um das Ordnungs-Array als Parameter übergeben zu können.
<?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);



?>

Benutzte Funktionen


Hinweise zum DatenschutzImpressum © 2005-2008 S. Eickhoff