я использую 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('"'));
}
но я все равно получаю тот же результат.
array_map
принимает функцию, которая принимает только один параметр. Если вы хотите отобразить свой массив с trim()
с последующими параметрами, отличными от параметров по умолчанию, вы должны обернуть его анонимной функцией:
$split = array_map(function($item) {
return trim($item, ' \'"');
}, $split);
Я думаю, что вам нужно будет использовать анонимную функцию для этого 🙂
$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);
Я бы использовал array_walk
, и вам просто нужно добавить свои дополнительные символы к существующим значениям по умолчанию (из документы):
array_walk($string_arr_to_trim, function (&$v) {
$v = trim($v, " \t\n\r\0\x0B'\"");
});