Я использую 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'\""); });