Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用未定义的常量数组\u过滤器\u使用\u两者-假定&\x27;数组(过滤器)使用(两者)';_Php_Arrays_Codeigniter_Array Filter - Fatal编程技术网

Php 使用未定义的常量数组\u过滤器\u使用\u两者-假定&\x27;数组(过滤器)使用(两者)';

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

我使用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'

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

由于您根本不在回调中使用
$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
标志。在我的脑海中,您是否有PHP
5.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