Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 30. April 2012 15:01

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

array/object sortieren (code inside)

Habe mir für arrays im Netz ein plugin gesucht:

<?php
function smarty_cms_modifier_array_orderby($array) {
    $args = func_get_args();
    $data = array_shift($args);
    foreach ($args as $n => $field) {
        if (is_string($field)) {
            $tmp = array();
            foreach ($data as $key => $row)
                $tmp[$key] = $row[$field];
            $args[$n] = $tmp;
            }
    }
    $args[] = &$data;
    call_user_func_array('array_multisort', $args);
    return array_pop($args);   
}
?>

Damit kann man ein Array bequem sortieren: {$array|array_orderby:"irgendwas"}
funktioniert bei mehrdimensionalen arrays soweit gut. aber oft gibt es bei den modulen von cmsms Objects, die dann wiederum arrays beinhalten. Die lassen sich damit leider nicht sortieren: "Cannot use object of type stdClass as array".
Frage: Wie müsste ich das umschreiben damit der modifier mit beidem zu recht kommt?

das beispiel-object sieht ungefähr so aus:

<pre>Array
(
    [0] => stdClass Object
        (
            [item_id] => 6
            [category_id] => 0
            [title] => Reise 2
            [fields] => Array
                (
                    [reiseziel] => Array
                        (
                            [fielddef_id] => 8
                            [name] => Reiseziel
                            [alias] => reiseziel
                            [value] => Kroatien, Novalja
                            [searchable] => 1
                            [frontend] => 1
                            [type] => textbox
                        )
                )
        )

    [1] => stdClass Object
        (
            [item_id] => 3
            [category_id] => 0
            [title] => Reise 3
            [fields] => Array
                (
                    [reiseziel] => Array
                        (
                            [fielddef_id] => 8
                            [name] => Reiseziel
                            [alias] => reiseziel
                            [value] => Niederlande, Zandvoort
                            [searchable] => 1
                            [frontend] => 1
                            [type] => textbox
                        )
                )
        )

    [2] => stdClass Object
        (
            [item_id] => 2
            [category_id] => 0
            [title] => Reise 2
            [fields] => Array
                (
                    [reiseziel] => Array
                        (
                            [fielddef_id] => 8
                            [name] => Reiseziel
                            [alias] => reiseziel
                            [value] => Kroatien, Novalja
                            [searchable] => 1
                            [frontend] => 1
                            [type] => textbox
                        )
                )
        )

    [3] => stdClass Object
        (
            [item_id] => 1
            [category_id] => 0
            [title] => Reise 1
            [fields] => Array
                (
                    [reiseziel] => Array
                        (
                            [fielddef_id] => 8
                            [name] => Reiseziel
                            [alias] => reiseziel
                            [value] => Griechenland, Korfu
                            [searchable] => 1
                            [frontend] => 1
                            [type] => textbox
                        )
                )
        )

)
1</pre>

Nun will ich aber nicht diese Sortierung, sondern nach "reiseziel.value" sortieren. also die neue reihenfolge wäre dann [3], [0], [2] und [1]

Offline

#2 30. April 2012 17:38

piratos
arbeitet mit CMS/ms
Registriert: 12. August 2011
Beiträge: 545

Re: array/object sortieren (code inside)

Da schaust du bei php.net nach unter

http://de.php.net/manual/de/function.ar … tisort.php

da gibt es ein Programm -  Beispiel dazu.

Offline

#3 30. April 2012 18:43

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: array/object sortieren (code inside)

bin in php nicht so bewandert und sehe auch keinen Eintrag der auf mein Beispiel zutrifft.

Offline