2011-08-18 38 views
0

好的,我試圖找出最好的方法來做到這一點。我的代碼如下:PHP - 在爆炸期間向字符串數組添加前綴

$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'; 

我有得到每explode改變一個名爲$folder變量,但我怎麼能$folder名字符串變量添加到年初每個值在爆炸時呢?還是有更好的方法來做到這一點?

謝謝你們:)

回答

2

使用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陣列中。

+0

非常感謝。我其實想到了這一點,並創建了另一個數組綁定。 '$ context ['dp_module_headers'] [$ folder] = explode('+',$ row [$ type。'_header_files']);'比在另一個文件中,我只執行2個foreach循環。第一個給我的文件夾名稱,第二個循環給我的值內的路徑。這就像一個魅力,特別是因爲$文件夾變量永遠不會有空格,只有1個文件夾名稱。 – SoLoGHoST