PHP - добавление префикса в массив строк во время разнесения - PullRequest
0 голосов
/ 18 августа 2011

Хорошо, я пытаюсь найти лучший способ сделать это. У меня есть следующий код:

$context['dp_module_headers'] = array();

Затем, внутри функции внутри цикла while, я перебираю все foldernames и применяю путь к этому массиву. Но пути указаны относительно имен папок, поэтому мне нужно включить имена папок в значения разобранного массива.

$context['dp_module_headers'] += explode('+', $row[$type . '_header_files']);

Это может вернуть массив так:

$context['dp_module_headers'][0] = 'source/script.js';
$context['dp_module_headers'][1] = 'source/script.css';
$context['dp_module_headers'][2] = 'source/script.js';
$context['dp_module_headers'][3] = 'mydir/style.css';

Мне нужно предварительно перенести имя папки перед всеми значениями в массиве. У меня есть доступ только к имени папки, в которой оно находится, когда оно находится внутри функции, которая выполняет разнесение. Поэтому в другой функции другого файла у меня нет доступа к имени папки, на которую ссылаются эти пути.

Итак, когда я выполняю разнесение, мне нужно предварительно найти имя папки перед каждым путем в пределах значения каждого массива.

Итак, в основном, этот массив должен возвращать следующее:

$context['dp_module_headers'][0] = 'sitenews/source/script.js';
$context['dp_module_headers'][1] = 'sitenews/source/script.css';
$context['dp_module_headers'][2] = 'userpanel/source/script.js';
$context['dp_module_headers'][3] = 'userpanel/mydir/style.css';

У меня есть переменная с именем $folder, которая изменяется на explode, но как я могу добавить строковую переменную имени $folder в начало каждого значения при его разнесении? Или есть лучший способ сделать это?

Спасибо, ребята:)

1 Ответ

3 голосов
/ 18 августа 2011

В PHP 5.3+ вы можете использовать что-то вроде этого:

$context['dp_module_headers'] += array_map(
    function ($path) use ($folder) { return $folder . $path; },
    explode('+', $row[$type . '_header_files'])
);

Немного неудобнее с 5.2-, там вы должны сохранить свои разнесенные пути в переменной, зациклить этот массив, добавив значение $folder к каждому значению, , затем и добавьте результат в ваш $context массив.

...