[英]PHP: check if a value exists in array ( not as equal but as Part of )
好吧...對戰的權利,讓我清楚問題不在於什么。 它不是關於in_array。
因為PHP手冊清楚地解釋了,函數'in_array'檢查數組中是否存在值。 但它會根據平等進行檢查。 它不基於部分存在。
例如,如果我看的值是'溢出',我碰巧有這樣的數組
array('cnn','stackoverflow')
,
in_array會以FALSE返回,告訴我在這個數組的in值中不存在overflow
,這在某種程度上是TRUE。 但在某種程度上,是假的。
對我來說,字符串“overflow”確實存在於字符串stackoverflow中。“因此,它應該返回TRUE。當然,我不能多說這一點。
PHP中是否有另一個功能(或高效的單行程)來獲取我想要的東西?
我正在尋找像這樣的解決方案
array_filter($ary,'strlen');
它以非常有效的方式從$ ary中刪除空行。
我不想通過傳統的方式去通過foreach並使用strpos在針和干草堆之間進行比較。 我已經知道那個解決方案。
我正在尋找一個襯墊,就像在(strlen)示例中一樣
謝謝。
php中沒有可滿足作者確切要求的功能。 開發人員必須編寫一些代碼,以便您可以嘗試以下代碼:
function array_check($arr, $keyword) {
foreach($arr as $index => $string) {
if (strpos($string, $keyword) !== FALSE)
return $index;
}
}
var_dump(array_check(array('cnn','stackoverflow'),'overflow'));
exit;
Lame選項: false !== strpos(implode($ary, '|'),'overflow')
只要分隔符( |
here)不在搜索字符串中,就可以了。
更復雜的選項: count(array_filter( $ary, function($x) { return strpos($x, 'overflow'); } ) );
編輯:第二個選項完整代碼如下所示:
$ary = array('cnn', 'stackoverflow'); // or whatever your data is
(bool) count(array_filter( $ary, function($x) { return strpos($x, 'overflow'); } ) );
如果未找到, count()
值將為0
如果找到匹配,則為count()
。 因此,您可以在if()
語句中使用它,從函數return
它,或者其他什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.