使用未定义的常量ARRAY_FILTER_USE_BOTH - 假设为'ARRAY_FILTER_USE_BOTH'

时间:2015-03-26 08:25:15

标签: php arrays codeigniter array-filter

我使用Codeigniter作为框架,并使用表单中的输入参数创建如下所示的数组。

$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'

是否有一种简单的方法可以完成此操作或如何解决此问题?

1 个答案:

答案 0 :(得分:3)

由于您根本没有在回调中使用$key,因此您也不需要ARRAY_FILTER_USE_BOTH标记。您的功能可以简化为:

$data = array_filter($data);

说真的,它做同样的事情。

  

我想要做的是,如果输入字段的值为空,我想将特定数组位置的值设置为NULL

array_filter开始时不会这样做。它将完全删除“空”元素,而不是将它们设置为null。你想要:

$data = array_map(function ($value) { return $value ?: null; }, $data);

这会将 falsey (空字符串,0,空数组)的任何值设置为null