将以前的数组值添加到较新的数组值


adding previous array values to newer array values

$test = 'test1/test2/test3/test4';

我正在尝试从该$test中获取一个数组,我想在上面输出如下。

Array
(
    [0] => /
    [1] => /test1/
    [2] => /test1/test2/
    [3] => /test1/test2/test3/
    [4] => /test1/test2/test3/test4/
)

我已经尝试过循环,但不太弄清楚如何使其完全正确。

尝试像这样做循环:

$test = 'test1/test2/test3/test4';
$test_arr = explode("/", $test);
$test_size = count($test_arr);
$count = 1;
$new_test_arr = array('/');
for ($i=0; $i<$test_size; $i++)
{
  $new_test_arr[$count] = $new_test_arr[$i] . $test_arr[$i] . "/"
  $count++;
}

这里有一种非常紧凑的方法:

$parts = explode("/", $test);
for($i = 0; $i <= count($parts); ++$i) {
    echo "/".implode("/", array_slice($parts, 0, $i))."'n";
}
效率

不是很高,但我不认为效率在你只会做一次的琐碎事情上很重要。从好的方面来说,循环不修改任何变量,这使得推理更容易。

看到它的实际效果

对于这种情况,一个非常简单的方法将是

$test = 'test1/test2/test3/test4';
$arr = explode("/", $test);
$t = "";
$newArray = array("/");
foreach($arr as $value) {
   $t .= "/".$value;
   $newArray[] = $t;
}
print_r($newArray);

演示