массивы — PHP array_map trim + параметры

я использую array_map чтобы обрезать все значения моего массива, но мне нужно передать третий параметр, потому что мне нужно больше, чем просто обрезать пробелы, поэтому я передаю третий параметр. По сути, я хочу обрезать все значения массива из пробелов, одинарных и двойных кавычек.

У меня есть служебный класс, где я создал функцию, и это выглядит так:

public function convertToArray($string, $trim = false) {
$split = explode(",", $string);

if($trim) {
$split = array_map("trim", $split, array(" '\""));
}

return $split;
}

Почему-то я не могу сделать эту работу, хотя. Я все еще вижу двойные кавычки в результате, хотя я следовал ответ здесь.

Я даже пытался

if($trim) {
$split = array_map("trim", $split);
$split = array_map("trim", $split, array("'"));
$split = array_map("trim", $split, array('"'));
}

но я все равно получаю тот же результат.

4

Решение

array_map принимает функцию, которая принимает только один параметр. Если вы хотите отобразить свой массив с trim() с последующими параметрами, отличными от параметров по умолчанию, вы должны обернуть его анонимной функцией:

$split = array_map(function($item) {
return trim($item, ' \'"');
}, $split);
13

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

Я думаю, что вам нужно будет использовать анонимную функцию для этого 🙂

$split = array_map(function ($value) {
return trim($value, " '\"");
}, $split);

Просто потому, что это было точно так же, как другой ответ, вот альтернатива. Этот подход может быть полезен, если эта операция вам понадобится в разных местах;)

function trim_spaces_and_quotes($value) {
return trim($value, " '\"");
}

$split = array_map('trim_spaces_and_quotes', $split);
2

Я бы использовал array_walk, и вам просто нужно добавить свои дополнительные символы к существующим значениям по умолчанию (из документы):

array_walk($string_arr_to_trim, function (&$v) {
$v = trim($v, " \t\n\r\0\x0B'\"");
});
0
По вопросам рекламы [email protected]