我想做什么:
使用 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。
问题是没有数据时的类型不是空数组,而是空字符串。