2014-02-14 66 views
1

我嘗試以下操作:陣列搜索,其中每個元素包含一長串

$os = array("Helo how are you"); 

if (in_array("you", $os)) { 
    echo "FOUND!!"; 
} 

我試圖尋找一個字,但它不顯示任何內容。我不確定問題是什麼。

+1

您必須循環THR只需使用strpos函數檢查數組和字符串。 'in_array'匹配整個字符串而不是子字符串。 –

回答

0

嘗試:

foreach ($os as $item) { 
    if (strpos($item, 'you') !== false) { 
     echo "FOUND!!"; 
     break; 
    } 
} 

或者:

if (strpos(implode('', $os), 'you') !== false) { 
    echo "FOUND!!"; 
} 

或者:

if (preg_grep('/you/', $os)) { 
    echo "FOUND!!"; 
} 
+0

第一個是好的,而第二個不是(想象陣列'['y','ou']') –

+0

@AlmaDo這是一個邊界情況。第三個呢? ;-) – hsz

+0

第三個不在我寫評論的時候:p我喜歡'preg_grep()' - 但是,用strpos()搜索字符串會更快(但我懷疑這種差異在普通case) –

0

嘗試像,

$os = array("Helo how are you"); 
if (strpos($os[0],'are') !== false) { 
    echo 'true'; 
} 
+0

如果數組包含多於'0'索引,該怎麼辦? –

+0

然後把它放在foreach循環裏很好。 –

+0

謝謝大家!如果我想打印索引號,array_search會工作嗎? – snab

相關問題