'Cannot use object of type stdClass as array' using Wordpress

44,627

Solution 1

Note that the array contains objects (instances of stdClass), not other arrays. So the syntax is:

$tag[0]->slug

Solution 2

Another option should be to explicitly cast $tag[0] into an array:

$t = (array)$tag[0];
$t["slug"] = ...

Can't get it to work though

Share:
44,627

Related videos on Youtube

Ian
Author by

Ian

Updated on July 09, 2022

Comments

  • Ian
    Ian almost 2 years

    I am trying to retrieve the slug for a tag inside a wordpress post, now its possible to get all tag info using

    $tag = wp_get_post_tags($post->ID);
    

    More info on this on the Wordpress Docs

    By using this you should get data returned like this...

    Array
    (
       [0] => stdClass Object
           (
               [term_id] => 4
               [name] => tag2
               [slug] => tag2
               [term_group] => 0
               [term_taxonomy_id] => 4
               [taxonomy] => post_tag
               [description] => 
               [parent] => 0
               [count] => 7
           )
    
       [1] => stdClass Object
           (
               [term_id] => 7
               [name] => tag5
               [slug] => tag5
               [term_group] => 0
               [term_taxonomy_id] => 7
               [taxonomy] => post_tag
               [description] => 
               [parent] => 0
               [count] => 6
           )
    
    )
    

    Now what I want is the slug for the first item which should be as follows

    $tag[0]['slug']
    

    However by doing so I recieve this php error:

    Cannot use object of type stdClass as array

    Can someone tell me what I'm doing wrong here? and whats the best way to get the slug data

  • Ian
    Ian almost 13 years
    Ah, thats exactly what I was looking for. Think I need to go back to php basics
  • mtk
    mtk almost 12 years
    Hi, instead of 'slug', I have '@classId' as the name to be fetched. Getting syntax error at token '@', do you know any work around? Thanks
  • mtk
    mtk almost 12 years
    fyi. I am calling a mysql proc with out parameter, and then doing a select in next query.
  • rid
    rid almost 12 years
    @mtk, use $tag[0]->{"@classId"}.
  • mtk
    mtk almost 12 years
    @radu that didn't work. Have asked the same question here. Please see.
  • Rens Tillmann
    Rens Tillmann over 10 years
    I created a custom walker for my menu in wordpress. Somehow it used both: objects and arrays in one argument. This little peace of code did the trick, didn't know about it.