我显然知道如何用循环来做到这一点,但我想知道是否有一行来转动它:
a/b/c/d
到
[a, a/b, a/b/c, a/b/c/d]
不完全是单行代码,但您可以使用array_reduce执行此操作:
$arr = array_reduce(explode('/', 'a/b/c/d'), function($accumulator, $char) {
$prev = empty($accumulator) ? '' : $accumulator[count($accumulator)-1] . '/';
$accumulator[] = $prev.$char;
return $accumulator;
}, []);
在
闭包中有一个分号,所以我想它在技术上是一个两行
echo json_encode(array_map(function($val,&$accumulator){return $accumulator=$accumulator.$val; },explode('/','a/b/c/d'),array()));
结果是:
["a","ab","abc","abcd"]