0

我正在尝试做的事情:

使用 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 文档。

4

2 回答 2

0

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

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

当未选择任何选项时,该值应为 "" 或 NULL。

于 2012-08-13T13:28:30.370 回答
0

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

于 2012-08-13T13:35:44.973 回答