phpbar.de logo

Mailinglisten-Archive

[php] array nach schlüssel sortieren

[php] array nach schlüssel sortieren

Michael Borchers list at tridemail.de
Mon Jun 4 14:56:56 CEST 2007


> Hi,
>
> Michael Borchers wrote:
>> Ich habs z zt wiefolgt gelöst:
>>
>> function compare($a, $b) {
>>  global $key;
>>        return strnatcasecmp($a[$key], $b[$key]);
>> }
>> $key = 'angebot_umsatz2';
>>
>> usort($arr, "compare");
>>
>> funzt auch, aber es gibt doch sicher ne hübschere methode als $key global 
>> zu
>> setzen, oder?!
>
> Wenn der zweite Parameter ein Callback ist, kannst du doch ein Objekt
> übergeben, dann brauchst du den globalen Namespace nicht zu verschmutzen.
>
> Sowas in der Art:
>
> $obj = new...
> usort($arr, array($obj, "compare"));
>
> Unter php.net/callback gibt es glaub ich ein paar Infos dazu.

Danke Martin, ich habe es in der Tat so gelöst in einer kleinen Klasse:

<?php
class arraySort
{
 function multisort_array($array, $key) {
  if(is_array($array)) {
   $this->key = $key;

   usort($array, array(arraySort, 'compare_key'));

   return $array;
  }
 }

 function compare_key($a, $b) {
  return strnatcasecmp($a[$this->key], $a[$this->key]);
 }
}
?> 


php::bar PHP Wiki   -   Listenarchive