2012-08-22 136 views
0
<?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;輸出的每一頁相關的標籤列表,所以我敢肯定的問題是我如何檢查,如果「視頻」是在標籤的列表。PHP - 搜索的數組,字符串

上述輸出以下列表:BreakfastBrunchBudgetMealEasyLunchQuick MealsSupperVegetarianVideosNot found即使畫是在列表中。

我也使用in_array尋找這樣的「視頻」的嘗試:

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

但得到相同的結果 - 我新的PHP很抱歉,如果這是很容易。

任何幫助將不勝感激。

乾杯

回答

0
$page->getAttribute($tags->getAttributeKeyHandle()) 

似乎返回爲特林。

在這種情況下

$selectedTags = array($page->getAttribute($tags->getAttributeKeyHandle())); 

是沒有意義的 - 你得到包含一個長字符串數組。

你想做什麼的是:

$ selectedTags = $頁面級>的getAttribute($ tags-> getAttributeKeyHandle());

if(stristr($selectedTags, $tagToFind)){ 
    // do something 
} 
else{ 
    // do something else 
} 
+0

真棒 - 容易,當你知道如何! – CMSCSS

3

似乎$ selectedTags一個字符串數組,因爲你foreach只循環一次

你應該嘗試做

$selectedTags = explode(" ",$page->getAttribute($tags->getAttributeKeyHandle())); 

然後用in_array功能

0

話,最好使用....

if(strcmp($tag , $tagToFind)) 
{ 
    echo "Found"; 
} 
else 
{ 
    echo "Not found"; 
} 

可能這對你的作品