2013-08-29 2 views
2

Я использую назначение list() в PHP, чтобы сразу присвоить значениям массива более переменным.PHP list() assign - trim перед назначением или любой другой функцией?

Вещь - мне нужно обрезать входные данные массива раньше - конечно, вы могли бы сделать foreach на массиве до или после этого - но есть ли способ лить подгонку в качестве какого-то фильтра заданий - или, по крайней мере, обрезать массив inline (без внешней функции или foreach)?

Вопрос больше похож на общий. Можете ли вы добавить функцию фильтра в список()?

EDIT:

Для тех, кто ищет решения "проще" с Еогеасп:

foreach($items as $k => $v) $item[$k] = trim($v); 
list($var1,$var2,$var3,$var4) = $items; 
+0

Нет, вы не можете; trim() не обрезает массивы, но строки. А list() - это специальная конструкция, которая не позволяет обратные вызовы. – Smar

ответ

8

не может дать вам более легкий путь, чем array_map():

list($var1,$var2,$var3,$var4) = array_map('trim', $items); 

«трюк» здесь состоит в том, что array_map применит функцию к каждому элементу массива, а затем вернет модификатор который затем будет использоваться list.

Little Demo

+2

Отличное решение! Я знал array_map(), но я не знал, что он может также называть собственные функции PHP !!! :) Глупый мне: D, еще раз спасибо! :) –

1
$items = array_map('trim', $items); 

list($var1,$var2,$var3,$var4) = $items; 
+0

inline - это была цель :), но я дам вам большие пальцы, потому что у вас есть правильный синтаксис :) –

1

Насколько я знаю список не принимает своего рода фильтр. array_map может быть более прямым:

list($var1,$var2,$var3,$var4) = array_map('trim', $items) 
+1

приятно, но обрезка должна быть в '', вы говорите, что хотите применить константу - это абсурд :) –

+2

Обновлено. Спасибо за совет. –

+0

Хорошо, я «отремонтировал» твою репутацию;) –

Смежные вопросы