我正在尝试使用以下代码过滤php中数组中的特定列:
(strpos( 'meeting',$event['categories'] ) == false )
它实际上不起作用。 [categories]持有的一个例子是:
$event['categories'] = 'meeting;skype'
提前致谢!
答案 0 :(得分:4)
您需要将参数翻转为strpos()
:
if (strpos($event['categories'], 'meeting') === false) {
echo $event['categories'] . ' does not contain "meeting"';
}
此外,使用严格比较(===
vs ==
),因为meeting
可能位于字符串的开头,然后strpos()
将返回0
},将评估为false
(在这种情况下会出错)。
供参考,见:
有关示例,请参阅:
答案 1 :(得分:0)
我认为你应该使用===
而不是==
并翻转参数
(strpos($event['categories'] , 'meeting') === false )
strpos可以返回0
或false
,当您使用==
时,零就像是假的
答案 2 :(得分:0)
<?php
$event = ['categories' => 'meeting;skype'];
$needle = 'meeting';
$haystack = $event['categories'];
if( ($pos = strpos( $haystack, $needle )) === false){
echo "\n$needle not found in $haystack";
}
else
{
echo "\n$needle exists at position $pos in $haystack";
}
请参阅demo
要注意的两件事是strpos()的参数顺序以及使用身份运算符(“===”)进行严格比较,以便当“针”出现在位置时如果使用等于运算符(“==”),那么'haystack'的零被错误地认为是错误的结果,假设在PHP中为零== false。