Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit stdClass und Array

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit stdClass und Array

    Hallo erstmal!

    Ich bin blutiger PHP Anfänger und schlage mich gerade damit rum. Genauer gesagt mit Php+Smarty+Arrays.
    Auszug aus meinem Array $nodelist:
    Code:
    stdClass Object
    (
        [id] => 30
        [pagetitle] => Logodesign
        [url] => http://www.domain.de/cmsms/leistungen/logo.html
        [accesskey] => 
        [type] => content2
        [tabindex] => 
        [titleattribute] => 
        [modified] => 2010-09-08 11:43:57
        [created] => 2010-09-08 11:37:01
        [hierarchy] => 3.1
        [depth] => 1
        [prevdepth] => 1
        [haschildren] => 
        [menutext] => Logodesign
        [raw_menutext] => Logodesign
        [target] => 
        [index] => 0
        [alias] => logo
        [parent] => 
        [extra1] => 
        [extra2] => 
        [extra3] => 
        [current] => 
    )
    stdClass Object
    (
        [id] => 28
        [pagetitle] => Printdesign
        [url] => http://www.domain.de/cmsms/leistungen/print.html
        [accesskey] => 
        [type] => content2
        [tabindex] => 
        [titleattribute] => 
        [modified] => 2010-09-08 11:43:40
        [created] => 2010-09-08 11:34:24
        [hierarchy] => 3.2
        [depth] => 1
        [prevdepth] => 1
        [haschildren] => 
        [menutext] => Printdesign
        [raw_menutext] => Printdesign
        [target] => 
        [index] => 1
        [alias] => print
        [parent] => 
        [extra1] => 
        [extra2] => 
        [extra3] => 
        [current] => 
    )
    und hier das script was das array schlucken soll:
    PHP-Code:
    function array_sort_by_fields(&$data$sortby){


          static 
    $sort_funcs = array();

        if (empty(
    $sort_funcs[$sortby]))
        {
            
    $code "\$c=0;";
            foreach (
    split(','$sortby) as $key)
            {
               
    $d '1';
                  if (
    substr($key01) == '-')
                  {
                     
    $d '-1';
                     
    $key substr($key1);
                  }
                  if (
    substr($key01) == '#')
                  {
                     
    $key substr($key1);
                   
    $code .= "if ( ( \$c = (\$a['$key'] - \$b['$key'])) != 0 ) return $d * \$c;\n";
                  }
                  else
                  {
                   
    $code .= "if ( (\$c = strcasecmp(\$a['$key'],\$b['$key'])) != 0 ) return $d * \$c;\n";
                }
            }
            
    $code .= 'return $c;';
            
    $sort_func $sort_funcs[$sortby] = create_function('$a, $b'$code);
        }
        else
        {
            
    $sort_func $sort_funcs[$sortby];
        }
        
    uasort($data$sort_func);
    }

    #
    # Modifier: sortby - allows arrays of named arrays to be sorted by a given field
    #
    function smarty_modifier_sortby($arrData,$sortfields) {

       
    array_sort_by_fields($arrData,$sortfields);
       return 
    $arrData;

    Aber ich bekomme die Fehlermeldung
    Code:
    Fatal error: Cannot use object of type stdClass as array in /homepages/44/d35513338/htdocs/design/cmsms/lib/smarty/plugins/modifier.sortby.php(35) : runtime-created function on line 1
    selbstverständlich habe ich danach gegooglet und ich verstehe dass mein array kein "richtiges" array ist. aber leider kann ich das nicht beeinflussen. kann man das irgendwie umwandeln? Also sozusagen als gültiges Array umschreiben?

    Grüße


  • #2
    Auf Arrays greifst du mit [] zu, also $array["key"], auf Objekte, wozu auch stdClass gehört, mit $object->key. Entsprechend musst du den Code (im wahrsten Sinne: $code) ändern.
    "Mein Name ist Lohse, ich kaufe hier ein."

    Kommentar


    • #3
      http://www.php.net/manual/de/languag....array.casting

      Das sollte helfen.
      "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

      Kommentar

      Lädt...
      X