| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

22-01-2011, 10:09
|
|
einermeiner
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 104
|
|
array_multisort Verständnisfrage
Ich habe folgenden Code
PHP-Code:
$adresse[] = array ( 'vorname' => "hans", 'nachname' => "schmidt", 'datum' => 1993 ); $adresse[] = array ( 'vorname' => "karl", 'nachname' => "schmidt", 'datum' => 1963 ); $adresse[] = array ( 'vorname' => "maria", 'nachname' => "schmidt", 'datum' => 1964 ); $adresse[] = array ( 'vorname' => "karla", 'nachname' => "meier", 'datum' => 1999 ); echo '<pre>'; foreach ( $adresse as $index => $inhalt ) { $vorname[$index] = $inhalt['vorname']; $nachname[$index] = $inhalt['nachname']; $datum[$index] = $inhalt['datum']; } array_multisort ($datum, SORT_DESC, $adresse); print_r($adresse);
Warum muss ich bei array_multisort noch als letzten Parameter $adresse eingeben?
Erst wird ja das Datum sortiert, woher kommt dann wieder der Zusammenhang, also dass das sortierte Datum passend zu den restlichen Daten ist?
|

22-01-2011, 11:14
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
array_multisort() sortiert zuerst $datum entsprechend des angegebenen SORT_DESC und dann $adresse anhand des gemeinsamen Schlüssels beider Arrays, welcher "datum" ist. Entspricht Beispiel #3 im Manual.
|

22-01-2011, 12:06
|
|
einermeiner
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 104
|
|
Das Beispiel hatte ich schon gesehen, nur mit dem gemeinsamen Schlüssel, das wurde nicht so gut erklärt.
Jetzt habe ich es verstanden, danke!
|

22-01-2011, 12:59
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Hier mal eine Alternative zu multisort:
PHP-Code:
function cmp_by_spalte_numerisch($spalte, $sortierrichtung = SORT_ASC)
{
$richtung = SORT_ASC === $sortierrichtung?1:-1;
return function ($a,$b) use ($spalte,$richtung)
{
return ($a[$spalte] - $b[$spalte]) * $richtung;
};
}
function cmp_by_spalte_string($spalte,$sortierrichtung = SORT_ASC)
{
$richtung = SORT_ASC === $sortierrichtung?1:-1;
return function ($a,$b) use ($spalte,$richtung)
{
return strcmp($a[$spalte],$b[$spalte]) * $richtung;
};
}
$adresse[] = array ( 'vorname' => "hans", 'nachname' => "schmidt", 'datum' => 1993 );
$adresse[] = array ( 'vorname' => "karl", 'nachname' => "schmidt", 'datum' => 1963 );
$adresse[] = array ( 'vorname' => "maria", 'nachname' => "schmidt", 'datum' => 1964 );
$adresse[] = array ( 'vorname' => "karla", 'nachname' => "meier", 'datum' => 1999 );
usort($adresse,cmp_by_spalte_numerisch('datum',SORT_DESC));
//usort($adresse,cmp_by_spalte_string('vorname')); //SORT_ASC
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|