AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [php] array_multisort - hat das schon mal wer benutzt?
Thema durchsuchen
Ansicht
Themen-Optionen

[php] array_multisort - hat das schon mal wer benutzt?

Ein Thema von glkgereon · begonnen am 21. Jul 2005 · letzter Beitrag vom 23. Jul 2005
Antwort Antwort
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#1

Re: [php] array_multisort - hat das schon mal wer benutzt?

  Alt 23. Jul 2005, 18:20
Salut.

Wenn ich Dich richtig verstanden habe, möchtest Du eine Datenstruktur mit folgendem Aufbau sortieren:
Delphi-Quellcode:
type
  TArrayTable = array { Zeilen } of array { Spalten } of Variant;
Das könnte so funktionieren:

Einerseits brauchst Du eine Funktion, die Dir sagt, wie die Relation zweier Werte ist. Wenn Du nun als Werte zwei konkrete Datensätze oder Zeilen betrachtest, wird dadurch also bestimmt, welcher der beiden Werte vor dem anderen einsortiert werden muss.

Andererseits brauchst Du eine Funktion, die Dir einen solchen Vergleich auf die Elemente der zu sorierenden Liste anwendet. Deine zu sorierende Liste ist Dein Array.

Daraus folgt:
Code:
function Compare($Item1, $Item2)
{
// Vergleich hier, vergleiche Delphi-Hilfe: TList.Sort, TListSortCompare.
}

function MySort($List, $SortCompare)
{
   usort($Data,$SortCompare);
   return($Data);
}
Das Problem, Listen zu sortieren, nicht neu ist, daher gibt es in PHP bereits reichlich Funktionen zum Sortieren von Listen. Siehe auch: usort, uksort, asort, ... Eine weitere nützliche Funktion ist array_reverse. Für diesen Zweck eignet sich usort.

Es folgt eine Beispieldatei: Hier wird das Futhark sortiert.
Code:
<?php

function MySort($Data,$SortCompare)
{
   usort($Data,$SortCompare);
   return($Data);
}

$Futhark = array(
   array('ID'=>1, 'Buchstabe'=>'F', 'Bezeichnung'=>'Fehu'),
   array('ID'=>2, 'Buchstabe'=>'U', 'Bezeichnung'=>'Uruz'),
   array('ID'=>3, 'Buchstabe'=>'TH', 'Bezeichnung'=>'Thurisaz'),
   array('ID'=>4, 'Buchstabe'=>'A', 'Bezeichnung'=>'Ansuz'),
   array('ID'=>5, 'Buchstabe'=>'R', 'Bezeichnung'=>'Raidho'),
   array('ID'=>6, 'Buchstabe'=>'K', 'Bezeichnung'=>'Kenaz')
   // usw.
);
?>

<h3>Das Futhark</h3>
<pre>
<?php print_r($Futhark); ?>
</pre>

<h4>Sortiert nach ID</h4>
<pre>
<?php

function IDCompare($Item1, $Item2)
{
   return(strnatcasecmp($Item1['ID'],$Item2['ID']));
}

print_r(MySort($Futhark,'IDCompare'));
?>
</pre>

<h4>Sortiert nach Buchstabe</h4>
<pre>
<?php

function BuchstabenCompare($Item1, $Item2)
{
   return(strnatcasecmp($Item1['Buchstabe'],$Item2['Buchstabe']));
}

print_r(MySort($Futhark,'BuchstabenCompare'));
?>
</pre>

<h4>Sortiert nach Bezeichnung</h4>
<pre>
<?php

function BezeichnungCompare($Item1, $Item2)
{
   return(strnatcasecmp($Item1['Bezeichnung'],$Item2['Bezeichnung']));
}

print_r(MySort($Futhark,'BezeichnungCompare'));
?>
</pre>
Die Ausgabe ist:
Code:
[b]Das Futhark[/b]
Array
(
    [0] => Array
        (
            [ID] => 1
            [Buchstabe] => F
            [Bezeichnung] => Fehu
        )

    [1] => Array
        (
            [ID] => 2
            [Buchstabe] => U
            [Bezeichnung] => Uruz
        )

    [2] => Array
        (
            [ID] => 3
            [Buchstabe] => TH
            [Bezeichnung] => Thurisaz
        )

    [3] => Array
        (
            [ID] => 4
            [Buchstabe] => A
            [Bezeichnung] => Ansuz
        )

    [4] => Array
        (
            [ID] => 5
            [Buchstabe] => R
            [Bezeichnung] => Raidho
        )

    [5] => Array
        (
            [ID] => 6
            [Buchstabe] => K
            [Bezeichnung] => Kenaz
        )

)

[b]Sortiert nach ID[/b]
Array
(
    [0] => Array
        (
            [ID] => 1
            [Buchstabe] => F
            [Bezeichnung] => Fehu
        )

    [1] => Array
        (
            [ID] => 2
            [Buchstabe] => U
            [Bezeichnung] => Uruz
        )

    [2] => Array
        (
            [ID] => 3
            [Buchstabe] => TH
            [Bezeichnung] => Thurisaz
        )

    [3] => Array
        (
            [ID] => 4
            [Buchstabe] => A
            [Bezeichnung] => Ansuz
        )

    [4] => Array
        (
            [ID] => 5
            [Buchstabe] => R
            [Bezeichnung] => Raidho
        )

    [5] => Array
        (
            [ID] => 6
            [Buchstabe] => K
            [Bezeichnung] => Kenaz
        )

)

[b]Sortiert nach Buchstabe[/b]
Array
(
    [0] => Array
        (
            [ID] => 4
            [Buchstabe] => A
            [Bezeichnung] => Ansuz
        )

    [1] => Array
        (
            [ID] => 1
            [Buchstabe] => F
            [Bezeichnung] => Fehu
        )

    [2] => Array
        (
            [ID] => 6
            [Buchstabe] => K
            [Bezeichnung] => Kenaz
        )

    [3] => Array
        (
            [ID] => 5
            [Buchstabe] => R
            [Bezeichnung] => Raidho
        )

    [4] => Array
        (
            [ID] => 3
            [Buchstabe] => TH
            [Bezeichnung] => Thurisaz
        )

    [5] => Array
        (
            [ID] => 2
            [Buchstabe] => U
            [Bezeichnung] => Uruz
        )

)

[b]Sortiert nach Bezeichnung[/b]
Array
(
    [0] => Array
        (
            [ID] => 4
            [Buchstabe] => A
            [Bezeichnung] => Ansuz
        )

    [1] => Array
        (
            [ID] => 1
            [Buchstabe] => F
            [Bezeichnung] => Fehu
        )

    [2] => Array
        (
            [ID] => 6
            [Buchstabe] => K
            [Bezeichnung] => Kenaz
        )

    [3] => Array
        (
            [ID] => 5
            [Buchstabe] => R
            [Bezeichnung] => Raidho
        )

    [4] => Array
        (
            [ID] => 3
            [Buchstabe] => TH
            [Bezeichnung] => Thurisaz
        )

    [5] => Array
        (
            [ID] => 2
            [Buchstabe] => U
            [Bezeichnung] => Uruz
        )

)
MfG
Panthrax
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz