检查值是否为空in_array? PHP

时间:2019-05-20 04:37:51

标签: php

我正在尝试在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

2 个答案:

答案 0 :(得分:2)

那不是因为数组内部不存在值。

看来您的数组创建方式不正确。

但是如果您确定数组绝对正确,请检查变量是否为数组。

使用PHP的is_array()函数。

PHP: is_array - Manual

请参阅:

 if (is_array($data_days) && in_array('1', $data_days, true)){
    $message = "exists";
   }
  else{
    $message = "doesn't exists!";
   }

答案 1 :(得分:1)

基于手册:-

in_array()

严格

  

如果第三个参数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)){

参考文献:-

empty()

count()

isset()

sizeof()