Использование неопределенной константы ARRAY_FILTER_USE_BOTH — предполагается «ARRAY_FILTER_USE_BOTH»

Я использую 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

Решение

Поскольку вы не используете $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,

4

Другие решения

Других решений пока нет …