好的......正确的打击,让我清楚问题不在于此。 它不是关于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)示例中那样
THX。
答案 0 :(得分:2)
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;
答案 1 :(得分:1)
Lame选项:false !== strpos(implode($ary, '|'),'overflow')
只要分隔符(|
此处)不在您的搜索字符串中,就可以了。
更复杂的选项: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
,如果找到匹配则为正值。因此,您可以在if()
语句中使用它,return
从函数中使用它,或者其他任何内容。