在 CakePHP 中使用 POST 数据array_diff


Using POST data in array_diff with CakePHP

我想做什么:

使用 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;
   }

!=null 不起作用,gettype()=="array" 也没有

工作问题

任何人都可以解释为什么if(!empty())测试是必要的,以及问题是否来自POST数据或array_diff函数?

编辑:它适用于gettype()=="array"。问题是没有数据时的类型不是空数组,而是空字符串。

附加信息:关于将 Post 数据转换为数组方式的 CakePHP 文档。

使用函数 "empty()",如果变量等于:

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

如果未选择任何选项,则值应为 " 或 NULL。

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