簡體   English   中英

PHP:檢查數組中是否存在值(不相等但作為其中的一部分)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM