在foreach中组合先前的数组值


Combining previous array values in foreach

我在数组中有目录,我的目标是在foreach(或等效)语句中获得文件夹名称和文件夹路径。

这是我到目前为止写的。

<?
$array = array("folder","path","here");
foreach ($array as $value){
    echo "File Name: $value";
    echo "File Path:       ";
}

如你所见,我不知道如何得到路径。我想要的,是这样的。

File Name: folder
File Path: /folder
File Name: path
File Path: /folder/path
File Name: here
File Path: /folder/path/here
谁有什么建议?谢谢!

对于您的确切输出,您可以使用array_slice():

foreach ($array as $current_index => $value){
    echo "File Name: $value";
    echo "File Path: /" . implode( '/', array_slice( $array, 0, $current_index + 1));
}

这将输出:

File Name: folder
File Path: /folder
File Name: path
File Path: /folder/path
File Name: here
File Path: /folder/path/here

否则,对于完整路径,您可以使用implode():

echo implode( '/', $array);

在循环内构建路径:

<?
$array = array("folder","path","here");
$path = "";
foreach ($array as $value){
    $path .= "/$value";
    echo "File Name: $value";
    echo "File Path: $path";
}

使用implode函数组合数组中的元素:

implode( '/', $array )

见http://www.php.net/manual/en/function.implode.php