Seite 1 von 2

mehrdimensionales Array sortieren

Verfasst: 30.08.2009 11:30
von djchrisnet
ich habe folgendes array dass dynamisch generiert wird und nun sortiert werden muss.

es handelt sich um eine Statistik, wer die meisten Dinge pro Jahr erhalten hat.
Hier erstmal ein Beispiel array:

Code: Alles auswählen

Array
(
    [2009] => Array
        (
            [192] => Array
                (
                    [angels] => 2
                    [rank] => false
                    [uid] => 192
                    [user] => User1
                    [posts] => 0
                )
            [134] => Array
                (
                    [angels] => 3
                    [rank] => false
                    [uid] => 134
                    [user] => User2
                    [posts] => 1
                )
            [202] => Array
                (
                    [angels] => 1
                    [rank] => false
                    [uid] => 202
                    [user] => User3
                    [posts] => 0
                )
            [45] => Array
                (
                    [angels] => 2
                    [rank] => false
                    [uid] => 45
                    [user] => User4
                    [posts] => 0
                )
        )
)
nun soll nach dem key "angels" sortiert werden. asort,arsort, ksort, krsort sind mir ein begriff. jedoch fehlts an der anwendung.

Danke für jeden helfenden Gedanken schonmal im vorraus

Re: mehrdimensionales Array sortieren

Verfasst: 30.08.2009 11:56
von mad-manne
djchrisnet hat geschrieben:ich habe folgendes array dass dynamisch generiert wird und nun sortiert werden muss.
.. / ..
Danke für jeden helfenden Gedanken schonmal im vorraus
Ich bin beileibe kein Experte im Sortieren derartiger Arrays ... aber wieso versuchst du nicht das Pferd von vorne(siehe oben) aufzuzäumen?
Ergo, bereits beim dynamischen "Generieren" ... die Datenbankabfragen(vermutlich) so gestalten, dass du beim Zusammenbauen des Arrays bereits die gewünschte Ordnung zur Verfügung hast?!

My 2 cents,
Manne.

Re: mehrdimensionales Array sortieren

Verfasst: 30.08.2009 12:11
von djchrisnet
die anzahl ist leider nicht in der datenbank und auch nicht über ein COUNT() zu kriegen.

Re: mehrdimensionales Array sortieren

Verfasst: 30.08.2009 13:52
von mad-manne
Wie wäre es hiermit ?? array-multisort.php
Habe das allerdings auch noch nie selbst genutzt :roll:

Gruss,
Manne.

Re: mehrdimensionales Array sortieren

Verfasst: 30.08.2009 18:25
von djchrisnet
Thema ist erledigt. Lösung gefunden. dennoch danke an alle

Re: mehrdimensionales Array sortieren

Verfasst: 31.08.2009 13:39
von oxpus
djchrisnet hat geschrieben:Thema ist erledigt. Lösung gefunden. dennoch danke an alle
Und wie heisst die Lösung in deinem Fall?
Hat denn "array_multisort" weitergeholfen?

Vielleicht möchten andere User auch hierzu lernen ;)

Re: mehrdimensionales Array sortieren

Verfasst: 31.08.2009 14:03
von djchrisnet
es ging dann am ende doch über die DB mit einem COUNT(), musste jedoch dafür die Struktur komplett umbauen.

mit array_multisort() ist das meiner meinung nach nicht möglich, hatte ich gestern aber auch eingehend getestet.

aber mal was anderes. wieso funktioniert den <!-- IF .loopname --> nicht mehr?

Beispiel:

Code: Alles auswählen

<!-- IF .loop -->
<tr>
   <td><!-- BEGIN loop -->{loog.data}<!-- END loop --></td>
</tr>
<!-- ENDIF -->
Vorteil währe dass keine leere zeile in der tabelle erstellt wird. die ersten 10 zeilen werden darüber bereits erstellt(mit einem anderen loop), ab der 11.ten soll alles restliche in eine zeile. aber so erstellt er eine leere zeile in der tabelle wenn es für zeile 11 keine daten gibt.

vll hat da jemand ne idee, <!-- BEGINELSE --> hilft jedenfalls dort nicht.

thx <3

Re: mehrdimensionales Array sortieren

Verfasst: 31.08.2009 14:12
von 4seven
dafür ist jetzt dieses konstrukt zuständig

Code: Alles auswählen

foreach ($some_array as $row)
{
    $template->assign_block_vars('block_name', array(
        'EXAMPLE'        => $row['beispiel'],
        'DEMO'            => $row['demonstration'],
    ));
} 
qualle: http://wiki.phpbb.com/Deutsch:Vorlage_f ... ene_Seiten

im template dann (zb)

Code: Alles auswählen

    <!-- BEGIN block_name -->
    <tr class="<!-- IF block_name.S_ROW_COUNT is even -->bg1<!-- ELSE -->bg2<!-- ENDIF -->">
        <td>{block_name.EXAMPLE}</td>
        <td>{block_name.DEMO}</td>
    </tr>
    <!-- END block_name --> 
funktioniert hervorragendst

foreach ($some_array as $row)
kann dann natürlich auch while, sort-konstrukte oder ähnliches sein.
halt alles was wie-auch-immer-geartete array-behandlung ist.

Re: mehrdimensionales Array sortieren

Verfasst: 31.08.2009 14:24
von djchrisnet
ne, ich meinte etwas anderes.

Ich suche eine möglichkeit ausserhalb vom loop selbst zu prüfen, ob der loop überhaupt exisitiert.

<!-- IF loopname --> ist dauerhaft true
und <!-- IF .loopname --> ist dauerhaft false

was die sache nicht einfacher macht, ist die tatsache, dass es sich um unterloop handelt, also wie folgt:

Code: Alles auswählen

<!-- BEGIN loop -->some html
<!-- BEGIN subloop1 -->some html<!-- END subloop1 -->
some html
<!-- BEGIN subloop2 -->some html<!-- END subloop2 -->
some html<!-- END loop -->

Re: mehrdimensionales Array sortieren

Verfasst: 31.08.2009 14:41
von 4seven
denke einfach um :wink:

Code: Alles auswählen

<!-- BEGIN block_name -->
some html
<!-- IF block_name.IRGENDWAS_1 -->some html <!-- ENDIF -->
some html
<!-- IF block_name.IRGENDWAS_2 -->some html<!-- ENDIF -->
some html
<!-- END block_name -->