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

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

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

Solutions Collecting From Web of "Параметры массива PHP array_map + параметры"

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'\""); });