php - 在数组中搜索字符串

时间:2012-08-22 07:27:05

标签: php arrays

<?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 VideosNot found,即使视频位于列表中。

我也尝试使用in_array来寻找像这样的'视频':

if (in_array($tagToFind, $selectedTags, true)) { // search the array for $tagToFind - true = strict
  echo ' Found';
} else { 
    echo ' Not found';
  }

但得到相同的结果 - 我是php的新手,很抱歉,如果这很容易。

非常感谢任何帮助。

干杯

3 个答案:

答案 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";
}

这可能对你有用