Php 使用未定义的常量数组\u过滤器\u使用\u两者-假定&\x27;数组(过滤器)使用(两者)';
我使用Codeigniter作为框架,并使用表单中的输入参数创建一个如下所示的数组Php 使用未定义的常量数组\u过滤器\u使用\u两者-假定&\x27;数组(过滤器)使用(两者)';,php,arrays,codeigniter,array-filter,Php,Arrays,Codeigniter,Array Filter,我使用Codeigniter作为框架,并使用表单中的输入参数创建一个如下所示的数组 $data = array( 'generated_id' => $this->input->post('generated_id'), 'one' => $this->input->post('one'), 'two' => $this->input-&g
$data = array(
'generated_id' => $this->input->post('generated_id'),
'one' => $this->input->post('one'),
'two' => $this->input->post('two'),
'three' => $this->input->post('three'),
'modified_date' => date('Y-m-d H:i:s'),
'modified_user_id' => $this->session->userdata('user_id')
);
我要做的是,如果输入字段中的值为空,我要将特定数组位置的值设置为NULL。
我正在使用下面的函数来完成它
$data = array_filter($data,function($value, $key){
if(empty($value))
return NULL;
else
return $value;
}, ARRAY_FILTER_USE_BOTH);
但我最后犯了以下错误
Use of undefined constant ARRAY_FILTER_USE_BOTH - assumed 'ARRAY_FILTER_USE_BOTH'
是否有一种简单的方法来完成此操作,或者如何解决此问题?由于您根本不在回调中使用
$key
,因此也不需要数组过滤器\u使用\u两者
标志。您的功能可以简化为:
$data = array_filter($data);
说真的,它也做同样的事情
我要做的是,如果输入字段中的值为空,我要将特定数组位置的值设置为NULL
array\u filter
一开始不会这样做。它将完全删除“空”元素,而不是将它们设置为null
。你想要:
$data = array_map(function ($value) { return $value ?: null; }, $data);
这会将任何错误的值(空字符串,
0
,空数组)设置为null
PHP版本5.6中引入了ARRAY\u FILTER\uu
标志。在我的脑海中,您是否有PHP5.6.0
或更高版本?如果您不使用ARRAY\u FILTER\u,请同时使用ARRAY\u FILTER\u和ARRAY\u FILTER\u USE\u键
不工作。谢谢提醒。如果是这样的话,我怎样才能解决这个问题?。我使用的是PHP5.5.9-1ubuntu4.4(cli)(构建时间:2014年9月4日06:56:34)能否请您解释一下解决方案的工作原理,array_map?那么我也可以接受这一点。array\u map
是一个非常常见的操作,本质上是:foreach($data as&$value)$value=$value?:null代码>