Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CakePHP在数组_diff中使用POST数据_Php_Cakephp_Post - Fatal编程技术网

使用CakePHP在数组_diff中使用POST数据

使用CakePHP在数组_diff中使用POST数据,php,cakephp,post,Php,Cakephp,Post,我想做什么: $relations_to_delete=array_diff($selectedEnjeuxMetiers,$this->request->data['EnjeuxMembership']['EnjeuxMetier']); if(!empty($this->request->data['EnjeuxMembership']['EnjeuxMetier'])){ $relations_to_delete=array_diff($sel

我想做什么:

$relations_to_delete=array_diff($selectedEnjeuxMetiers,$this->request->data['EnjeuxMembership']['EnjeuxMetier']);
  if(!empty($this->request->data['EnjeuxMembership']['EnjeuxMetier'])){
        $relations_to_delete=array_diff($selectedEnjeuxMetiers,$this->request->data['EnjeuxMembership']['EnjeuxMetier']);
                                                         
   }else{
            $relations_to_delete=$selectedEnjeuxMetiers;
   }
使用array_diff()函数处理来自多选输入的POST数据

初始代码:

$relations_to_delete=array_diff($selectedEnjeuxMetiers,$this->request->data['EnjeuxMembership']['EnjeuxMetier']);
  if(!empty($this->request->data['EnjeuxMembership']['EnjeuxMetier'])){
        $relations_to_delete=array_diff($selectedEnjeuxMetiers,$this->request->data['EnjeuxMembership']['EnjeuxMetier']);
                                                         
   }else{
            $relations_to_delete=$selectedEnjeuxMetiers;
   }
问题:在multiselect输入中未选择任何内容时,它不起作用

当前解决方案:

$relations_to_delete=array_diff($selectedEnjeuxMetiers,$this->request->data['EnjeuxMembership']['EnjeuxMetier']);
  if(!empty($this->request->data['EnjeuxMembership']['EnjeuxMetier'])){
        $relations_to_delete=array_diff($selectedEnjeuxMetiers,$this->request->data['EnjeuxMembership']['EnjeuxMetier']);
                                                         
   }else{
            $relations_to_delete=$selectedEnjeuxMetiers;
   }
这个解决方案有效=null不起作用,gettype()=“数组”

问题:有人能解释为什么需要进行if(!empty())测试,以及问题是否来自POST数据或array_diff函数吗

编辑:它与gettype()=“数组”一起使用。问题在于,没有数据时的类型不是空数组,而是空字符串

其他信息:

对于函数“empty()”,如果变量等于:

  • “”(空字符串)
  • 0(0作为整数)
  • “0”(0作为字符串)
  • 空的
  • 假的
  • array()(空数组)
  • var$var;(已声明的变量,但类中没有值)

未选择任何选项时,该值应为“”或NULL。

问题在于,没有数据时的类型不是空数组,而是空字符串。

对该值进行var_转储,并告诉我们returnedIt返回的值为“”,因此它是空字符串。确定已解决。它与gettype()==数组一起工作。必须是第一次输入错误。var_dump(“!=null)返回false关于数组的正确信息是var_dump(“!==null),请使用is_数组函数。谢谢Fabiano。复制此评论,我将接受。