phpbar.de logo

Mailinglisten-Archive

[php] krsort zu Fuss

[php] krsort zu Fuss

Guido Haeger GH-lists_(at)_ecora.de
Mon, 30 Oct 2000 20:13:02 +0100


Bernhard Ostheimer schrieb

> wie kann ich denn krsort (also Array nach Keys absteigend
> sortieren und  Beziehung key<->data beibehalten) zu Fuss
> realisieren? Die Funktion gibts erst ab 3.0.13
> (und ich hab 3.0.12 *schniff*).

Du willst Du bestimmt nicht hören, aber ein Upgrade auf 3.0.17 bzw.
4.0.3pl1 wäre auch aus anderen Gründen (Sicherheit) sehr zu empfehlen.

Ansonsten fällt mir folgendes ein. Da die Abarbeitung von Schleifen bei
PHP3 nicht besonders effizient ist, wird der nachfolgende Code bei
großen Arrays zu einer spürbaren Performancebremse werden.

function dirty_krsort($array, $debug=0)
{
 $z = 0;
 while(list($k, $v) = each($array))
 {
  $keys[$z] = $k;
  $values[$z] = $v;
  $z++;
 }

 arsort($keys);
 reset($keys);

 while(list($k, $v) = each($keys))
 {
  $new_array[$v] = $values[$k];
 }

 if($debug == 1)
 {
  reset($new_array);
  while(list($k, $v) = each($new_array))
  {
   echo "$k =&gt; $v <br>\n";
  }

 }

 return $new_array;
}

$array  = array(
  "bernhard" => "Osterheimer",
  "test" => "hurz",
    "lalilu" => "schnief",
    "purz" => "plemplem",
    "grunz" => "plop"
    );

$array = dirty_krsort($array,1);

Guido Haeger



php::bar PHP Wiki   -   Listenarchive