<?php // SEARCH TAGS FOR A SPECIFIC TAG
$tags = CollectionAttributeKey::getByHandle('recipe_tags'); // attribute handle of tags to search
$tagToFind = 'Videos'; // declare the specific tag to find
$selectedTags = array($page->getAttribute($tags->getAttributeKeyHandle())); // get tags associated with each page and put them in an array
foreach ($selectedTags as $tag) { // output tags separately
echo $tag; // ECHO TEST - check that individual tags associated with each page are outputting correctly
if ($tag == $tagToFind) { // if $tag is equal to $tagToFind
echo ' Found';
} else {
echo ' Not found';
}
}
?>
echo $tag;
输出与每个页面关联的标签列表,因此我非常确定问题是我如何检查“视频”是否在标签列表中。
以上列出了以下列表:Breakfast
Brunch
Budget
Meal
Easy
Lunch
Quick Meals
Supper
Vegetarian
Videos
和Not found
,即使视频位于列表中。
我也尝试使用in_array来寻找像这样的'视频':
if (in_array($tagToFind, $selectedTags, true)) { // search the array for $tagToFind - true = strict
echo ' Found';
} else {
echo ' Not found';
}
但得到相同的结果 - 我是php的新手,很抱歉,如果这很容易。
非常感谢任何帮助。
干杯
答案 0 :(得分:3)
似乎$ selectedTags是一个字符串数组,因为foreach
只循环一次
你应该尝试
$selectedTags = explode(" ",$page->getAttribute($tags->getAttributeKeyHandle()));
然后使用in_array
函数
答案 1 :(得分:0)
$page->getAttribute($tags->getAttributeKeyHandle())
似乎返回一个字符串。
在那种情况下
$selectedTags = array($page->getAttribute($tags->getAttributeKeyHandle()));
毫无意义 - 你得到一个包含一个长字符串的数组。
您想要的是:
$ selectedTags = $ page-&gt; getAttribute($ tags-&gt; getAttributeKeyHandle());
if(stristr($selectedTags, $tagToFind)){
// do something
}
else{
// do something else
}
答案 2 :(得分:0)
然后更好地使用....
if(strcmp($tag , $tagToFind))
{
echo "Found";
}
else
{
echo "Not found";
}
这可能对你有用