Как я могу использовать параметры / аргументы для моей функции обратного вызова в array_map ()?

Я использую этот код для получения массива из CSV-файла:

array_map('str_getcsv', 'file.csv')

Но как мне установить разделитель для str_getcsv() при использовании его в функции array_map?

2

Решение

Если вам нужно прикрепить дополнительные параметры к функции, которая требует вызова, то самый простой способ — просто передать функцию-оболочку с предварительно определенными параметрами.

$array = array_map(function($d) {
return str_getcsv($d, "\t");
}, file("file.csv"));

В качестве альтернативы вы можете передать параметры, используя use() Синтаксис с закрытием.

$delimiter = "|";
$array = array_map(function($d) use ($delimiter) {
return str_getcsv($d, $delimiter);
}, file("file.csv"));

Еще одна забавная вещь, которую можно сделать с помощью этой техники, — это создать функцию, которая возвращает функции со встроенными предопределенными значениями.

function getDelimitedStringParser($delimiter, $enclosure, $escapeChar){
return function ($str) use ($delimiter, $enclosure, $escapeChar) {
return str_getcsv($str, $delimiter, $enclosure, $escapeChar);
};
}

$fileData = array_map("trim", file("myfile.csv"));
$csv = array_map(getDelimitedStringParser(",", '"', "\\"), $fileData);
10

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector