PHP - 在爆炸期间向String数组添加前缀

时间:2011-08-18 04:18:32

标签: php explode arrays

好的,我想找出最好的方法来做到这一点。我的代码如下:

$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 个答案:

答案 0 :(得分:3)

使用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数组。