匹配数组中的字符串 strpos(): 空针

Match a string in an array strpos(): Empty needle

我有一个来自数据库的字符串,我想将其与数组匹配,但它导致错误提示:

strpos(): Empty needle in line X

if (!isset($_SESSION['arry'])) {
    $_SESSION['arry'] = array();
}
$imp = 42;
$arrys =  $_SESSION['arry'];

foreach($arrys as $string)
{
  if(strpos($imp, $string) !== false) 
  {
    $pow =1;
    break;
  }
}

if($pow==1){ exit; }

数组如下所示:

Array
(
    [0] => 218
    [1] => 219
    [2] =>  218
    [3] => 220
    [4] => 222
    [5] =>  42
    [6] => 223
)

直接在数组中搜索$imp即可,无需循环:

$imp = 42;
$arrys =  $_SESSION['arry'];

if(in_array($imp, $arrys)) {
    $pow = 1;
}

不清楚数组元素中是否有空格,因此您可能需要 trim() 它们:

in_array($imp, array_map('trim', $arrys))

另外,使用 strpos() 你会得到误报。如果 $imp = 42 它将匹配 422142999942777

你在做相反的事情,在 42 中搜索字符串,而不是去

strpos($string, $imp)

试试这个:(更新)

<?php

    $_SESSION['arry'] = array(236,235,239,243,246);

$imp =  239;
$arrys =  $_SESSION['arry'];
$arrys = array_unique($arrys);
$pow = "";
print "<pre>";
print_r($arrys);
print "</pre>";
foreach($arrys as $string)
{
if($string == $imp)  {
    $pow = 1; echo "we have".$imp."in array<br/>";
}
else{
    $pow = 0; echo "sorry".$imp."wasn't found in array<br/>";
}
}
?>