我有一个来自数据库的字符串,我希望与数组匹配但是会导致错误说:
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
)
答案 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
匹配422
,142
,999942777
等,则
答案 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/>";
}
}
?>