我正在尝试在If else语句中执行in_array
。它在哪里检查值是否存在于数组中。
这是我从ajax到控制器获取数组值的方式
$data_days = $request->dataDays;
示例输出:1,2,3,4,5,6,7
如果用户未检查monday
并检查了其余的几天,它将返回类似2,3,4,5,6,7
的数组
这些数字是天数
1 =星期一
2 =星期二,依此类推。
它来自多个复选框。
当值在数组内部匹配时,它可以正常工作。但是,当数组中不存在该值时,它将返回一个错误,指出
in_array()期望参数2为数组,给定null ,因为我与数组匹配的值不存在或null
if (in_array('1', $data_days, true)){
$message = "exists";
}
else{
$message = "doesn't exists!";
}
如果数组中没有1
值,则应返回doesn't exists!
,到目前为止,它只给我这样的错误
in_array()期望参数2为数组,给定null
答案 0 :(得分:2)
那不是因为数组内部不存在值。
看来您的数组创建方式不正确。
但是如果您确定数组绝对正确,请检查变量是否为数组。
使用PHP的is_array()
函数。
请参阅:
if (is_array($data_days) && in_array('1', $data_days, true)){
$message = "exists";
}
else{
$message = "doesn't exists!";
}
答案 1 :(得分:1)
基于手册:-
严格
如果第三个参数strict设置为TRUE,则in_array() 功能还将检查大海捞针中的针头类型。
因此,它尝试检查数组内的字符串'1'
类型,并且由于没有与之相关的值,因此它会为您提供NULL错误消息
也使用1
代替'1'
。
您必须检查!empty()
if (!empty($data_days) && in_array(1, $data_days, true)){ // use numeric value 1, not string
或将count()
与isset()
一起使用
if ( isset($data_days) && count($data_days) > 0 && in_array(1, $data_days, true)){
或将sizeof()
与isset()
一起使用
if ( isset($data_days) && sizeof($data_days) > 0 && in_array(1, $data_days, true)){
参考文献:-