I'm looping through an object, and when an object key equals a string, it echoes something. However, it's not working when in an if statement
.
$get_categories = get_categories(); // gets an object (with the key)
foreach ($get_categories as $key) {
$each_cat = $key->name;
echo $each_cat; // echoes 'beauty', 'celebrity', 'lifestyle'
if ($each_cat == 'fashion') { // this is FALSE, even though it prints 'fashion' above
echo 'Yes, this is the fashion string'; // this does not get printed
}
}
This is the object it's looping through:
ARRAY (SIZE=7)
0 =>
OBJECT(STDCLASS)[311]
PUBLIC 'TERM_ID' => &STRING '9' (LENGTH=1)
PUBLIC 'NAME' => &STRING 'BEAUTY' (LENGTH=6)
PUBLIC 'SLUG' => &STRING 'BEAUTY' (LENGTH=6)
PUBLIC 'TERM_GROUP' => STRING '0' (LENGTH=1)
PUBLIC 'TERM_TAXONOMY_ID' => STRING '9' (LENGTH=1)
PUBLIC 'TAXONOMY' => STRING 'CATEGORY' (LENGTH=8)
PUBLIC 'DESCRIPTION' => &STRING '' (LENGTH=0)
PUBLIC 'PARENT' => &STRING '0' (LENGTH=1)
PUBLIC 'COUNT' => &STRING '1' (LENGTH=1)
PUBLIC 'CAT_ID' => &STRING '9' (LENGTH=1)
PUBLIC 'CATEGORY_COUNT' => &STRING '1' (LENGTH=1)
PUBLIC 'CATEGORY_DESCRIPTION' => &STRING '' (LENGTH=0)
PUBLIC 'CAT_NAME' => &STRING 'BEAUTY' (LENGTH=6)
PUBLIC 'CATEGORY_NICENAME' => &STRING 'BEAUTY' (LENGTH=6)
PUBLIC 'CATEGORY_PARENT' => &STRING '0' (LENGTH=1)
1 =>
OBJECT(STDCLASS)[310]
PUBLIC 'TERM_ID' => &STRING '11' (LENGTH=2)
PUBLIC 'NAME' => &STRING 'CELEBRITY' (LENGTH=9)
PUBLIC 'SLUG' => &STRING 'CELEBRITY' (LENGTH=9)
PUBLIC 'TERM_GROUP' => STRING '0' (LENGTH=1)
PUBLIC 'TERM_TAXONOMY_ID' => STRING '11' (LENGTH=2)
PUBLIC 'TAXONOMY' => STRING 'CATEGORY' (LENGTH=8)
PUBLIC 'DESCRIPTION' => &STRING '' (LENGTH=0)
PUBLIC 'PARENT' => &STRING '0' (LENGTH=1)
PUBLIC 'COUNT' => &STRING '3' (LENGTH=1)
PUBLIC 'CAT_ID' => &STRING '11' (LENGTH=2)
PUBLIC 'CATEGORY_COUNT' => &STRING '3' (LENGTH=1)
PUBLIC 'CATEGORY_DESCRIPTION' => &STRING '' (LENGTH=0)
PUBLIC 'CAT_NAME' => &STRING 'CELEBRITY' (LENGTH=9)
PUBLIC 'CATEGORY_NICENAME' => &STRING 'CELEBRITY' (LENGTH=9)
PUBLIC 'CATEGORY_PARENT' => &STRING '0' (LENGTH=1)
3 =>
OBJECT(STDCLASS)[308]
PUBLIC 'TERM_ID' => &STRING '4' (LENGTH=1)
PUBLIC 'NAME' => &STRING 'FASHION' (LENGTH=7)
PUBLIC 'SLUG' => &STRING 'FASHION' (LENGTH=7)
PUBLIC 'TERM_GROUP' => STRING '0' (LENGTH=1)
PUBLIC 'TERM_TAXONOMY_ID' => STRING '4' (LENGTH=1)
PUBLIC 'TAXONOMY' => STRING 'CATEGORY' (LENGTH=8)
PUBLIC 'DESCRIPTION' => &STRING '' (LENGTH=0)
PUBLIC 'PARENT' => &STRING '0' (LENGTH=1)
PUBLIC 'COUNT' => &STRING '4' (LENGTH=1)
PUBLIC 'CAT_ID' => &STRING '4' (LENGTH=1)
PUBLIC 'CATEGORY_COUNT' => &STRING '4' (LENGTH=1)
PUBLIC 'CATEGORY_DESCRIPTION' => &STRING '' (LENGTH=0)
PUBLIC 'CAT_NAME' => &STRING 'FASHION' (LENGTH=7)
PUBLIC 'CATEGORY_NICENAME' => &STRING 'FASHION' (LENGTH=7)
PUBLIC 'CATEGORY_PARENT' => &STRING '0' (LENGTH=1)
5 =>
OBJECT(STDCLASS)[306]
PUBLIC 'TERM_ID' => &STRING '10' (LENGTH=2)
PUBLIC 'NAME' => &STRING 'LIFESTYLE' (LENGTH=9)
PUBLIC 'SLUG' => &STRING 'LIFESTYLE' (LENGTH=9)
PUBLIC 'TERM_GROUP' => STRING '0' (LENGTH=1)
PUBLIC 'TERM_TAXONOMY_ID' => STRING '10' (LENGTH=2)
PUBLIC 'TAXONOMY' => STRING 'CATEGORY' (LENGTH=8)
PUBLIC 'DESCRIPTION' => &STRING '' (LENGTH=0)
PUBLIC 'PARENT' => &STRING '0' (LENGTH=1)
PUBLIC 'COUNT' => &STRING '3' (LENGTH=1)
PUBLIC 'CAT_ID' => &STRING '10' (LENGTH=2)
PUBLIC 'CATEGORY_COUNT' => &STRING '3' (LENGTH=1)
PUBLIC 'CATEGORY_DESCRIPTION' => &STRING '' (LENGTH=0)
PUBLIC 'CAT_NAME' => &STRING 'LIFESTYLE' (LENGTH=9)
PUBLIC 'CATEGORY_NICENAME' => &STRING 'LIFESTYLE' (LENGTH=9)
PUBLIC 'CATEGORY_PARENT' => &STRING '0' (LENGTH=1)
6 =>
OBJECT(STDCLASS)[305]
PUBLIC 'TERM_ID' => &STRING '1' (LENGTH=1)
PUBLIC 'NAME' => &STRING 'NONE' (LENGTH=4)
PUBLIC 'SLUG' => &STRING 'NONE' (LENGTH=4)
PUBLIC 'TERM_GROUP' => STRING '0' (LENGTH=1)
PUBLIC 'TERM_TAXONOMY_ID' => STRING '1' (LENGTH=1)
PUBLIC 'TAXONOMY' => STRING 'CATEGORY' (LENGTH=8)
PUBLIC 'DESCRIPTION' => &STRING '' (LENGTH=0)
PUBLIC 'PARENT' => &STRING '0' (LENGTH=1)
PUBLIC 'COUNT' => &STRING '2' (LENGTH=1)
PUBLIC 'CAT_ID' => &STRING '1' (LENGTH=1)
PUBLIC 'CATEGORY_COUNT' => &STRING '2' (LENGTH=1)
PUBLIC 'CATEGORY_DESCRIPTION' => &STRING '' (LENGTH=0)
PUBLIC 'CAT_NAME' => &STRING 'NONE' (LENGTH=4)
PUBLIC 'CATEGORY_NICENAME' => &STRING 'NONE' (LENGTH=4)
PUBLIC 'CATEGORY_PARENT' => &STRING '0' (LENGTH=1)
8 =>
OBJECT(STDCLASS)[303]
PUBLIC 'TERM_ID' => &STRING '16' (LENGTH=2)
PUBLIC 'NAME' => &STRING 'TOP' (LENGTH=3)
PUBLIC 'SLUG' => &STRING 'TOP' (LENGTH=3)
PUBLIC 'TERM_GROUP' => STRING '0' (LENGTH=1)
PUBLIC 'TERM_TAXONOMY_ID' => STRING '16' (LENGTH=2)
PUBLIC 'TAXONOMY' => STRING 'CATEGORY' (LENGTH=8)
PUBLIC 'DESCRIPTION' => &STRING '' (LENGTH=0)
PUBLIC 'PARENT' => &STRING '0' (LENGTH=1)
PUBLIC 'COUNT' => &STRING '2' (LENGTH=1)
PUBLIC 'CAT_ID' => &STRING '16' (LENGTH=2)
PUBLIC 'CATEGORY_COUNT' => &STRING '2' (LENGTH=1)
PUBLIC 'CATEGORY_DESCRIPTION' => &STRING '' (LENGTH=0)
PUBLIC 'CAT_NAME' => &STRING 'TOP' (LENGTH=3)
PUBLIC 'CATEGORY_NICENAME' => &STRING 'TOP' (LENGTH=3)
PUBLIC 'CATEGORY_PARENT' => &STRING '0' (LENGTH=1)
9 =>
OBJECT(STDCLASS)[302]
PUBLIC 'TERM_ID' => &STRING '8' (LENGTH=1)
PUBLIC 'NAME' => &STRING 'TRENDS' (LENGTH=6)
PUBLIC 'SLUG' => &STRING 'TRENDS' (LENGTH=6)
PUBLIC 'TERM_GROUP' => STRING '0' (LENGTH=1)
PUBLIC 'TERM_TAXONOMY_ID' => STRING '8' (LENGTH=1)
PUBLIC 'TAXONOMY' => STRING 'CATEGORY' (LENGTH=8)
PUBLIC 'DESCRIPTION' => &STRING '' (LENGTH=0)
PUBLIC 'PARENT' => &STRING '4' (LENGTH=1)
PUBLIC 'COUNT' => &STRING '1' (LENGTH=1)
PUBLIC 'CAT_ID' => &STRING '8' (LENGTH=1)
PUBLIC 'CATEGORY_COUNT' => &STRING '1' (LENGTH=1)
PUBLIC 'CATEGORY_DESCRIPTION' => &STRING '' (LENGTH=0)
PUBLIC 'CAT_NAME' => &STRING 'TRENDS' (LENGTH=6)
PUBLIC 'CATEGORY_NICENAME' => &STRING 'TRENDS' (LENGTH=6)
PUBLIC 'CATEGORY_PARENT' => &STRING '4' (LENGTH=1)
Try as
foreach ($get_categories as $key=>$val) {
$each_cat = $val->name;
echo $each_cat; // echoes 'beauty', 'celebrity', 'lifestyle'
if ($each_cat == 'fashion') { // this is FALSE, even though it prints 'fashion' above
echo 'Yes, this is the fashion string'; // this does not get printed
}
}
Here $key
is the array indexes 0,1,2...
The $val
is the corresponding values for those keys which is an Object.
So doing $key->name
will not return anything in this example.
if ($each_cat == 'fashion')
block of code is correct as your echo shows they are all in lower case, if you are looking at the variable dump they are all in CAPS including the PUBLIC, Key name etc. They should not get capitalized.