我对PHP还是很陌生...我试图检查我的$Session array
中是否存在一个值,然后根据该值显示内容,但是即使在我运行时,它始终显示“未找到匹配项”知道该值确实存在于数组中。
这是我数组的print_r
:
Array (
[0] => Array (
[0] => SIEMENS
[1] => 523-096-32
[2] => 1
[3] => New
)
)
当我这样做时:
$array = $_SESSION['arr'];
if( in_array( "523-096-32" , $array ) ){
echo "Match found";
}else{
echo "Match not found";
}
结果是“找不到匹配项”。
我也尝试用in_array
替换array_key_exists
,但结果却相同。
我的问题是:我要去哪里错了,如何解决它以显示“找到匹配项”?任何帮助将不胜感激。
答案 0 :(得分:-1)
使用in_array("523-096-32", $array[0])
作为您问题的注释会起作用,但是根据$_SESSION['arr']
应该做什么,它可能不是最佳解决方案。检查该值的最佳方法取决于$_SESSION['arr']
是否应该是多维数组。
似乎$_SESSION['arr']
中的数组是代表单个项目的一组值。如果$_SESSION['arr']
打算容纳一组这些项目,尽管您显示的示例中只有一个,则在$array[0]
中查找只会检查第一个项目。相反,您可以对其进行迭代,并检查每个项目的值,直到找到(或找不到)为止。
$found = false;
foreach ($_SESSION['arr'] as $item) {
if ($item[1] === "523-096-32") {
$found = true;
break;
}
}
echo $found ? 'Match found' : 'Match not found';
如果$_SESSION['arr']
中的项目结构不一致,则对$item[1]
的引用将不准确,您应改用in_array
。
if (in_array("523-096-32", $item)) { ...
如果$_SESSION['arr']
仅深一层,则不需要使用递归函数来查找匹配项。
另一方面,如果$_SESSION['arr']
仅是一个数组,而不是像其中那样包含另一个数组的数组,则可能分配错误,例如
$_SESSION['arr'][] = ['SIEMENS', '523-096-32', '1', 'New'];
代替
$_SESSION['arr'] = ['SIEMENS', '523-096-32', '1', 'New'];
如果像此处的第二个示例一样直接分配它,则可以像尝试那样使用in_array
进行操作。