在php中过滤数组中的特定列

时间:2017-08-07 09:13:50

标签: php

我正在尝试使用以下代码过滤php中数组中的特定列:

(strpos( 'meeting',$event['categories'] ) == false )

它实际上不起作用。 [categories]持有的一个例子是:

$event['categories'] = 'meeting;skype'

提前致谢!

3 个答案:

答案 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可以返回0false,当您使用==时,零就像是假的

请参阅compression operators

请参阅strpos() docs

答案 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。