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

时间:2016-04-25 21:38:02

标签: php arrays session strpos

我有一个来自数据库的字符串,我希望与数组匹配但是会导致错误说:

  

strpos():第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
)

2 个答案:

答案 0 :(得分:2)

只需在数组中搜索$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等,则

答案 1 :(得分:0)

你正在做相反的方式,在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/>";
}
}
?>