Mailinglisten-Archive |
> 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