我希望开发一个算法来创建 Symfony 模板服务。 我想检查模板是否存在于子集路径中,并按顺序排列。
给定参数数组如下(已按我所需的顺序排序):
$params = ['O', 'U', 'W', 'P']
我该如何输出这个数组?
$urls = [
'O/U/W/P/template',
'O/U/W/template',
'O/U/P/template',
'O/U/template',
'O/W/P/template',
'O/W/template',
'O/P/template',
'O/template',
'U/W/P/template',
'U/W/template',
'U/P/template',
'U/template',
'W/P/template',
'W/template',
'P/template',
'template'
];
我可以用这样的代码对少量参数进行操作(我想每个人都能做到):
private function getPaths($template, $params)
{
$urls = [];
$alreadyPerform = [];
$paramsCounter = count($params);
for ($i = 0; $i < $paramsCounter; $i++) {
for ($j = 0; $j < $paramsCounter; $j++) {
if ($i !== $j && !in_array($params[$j], $alreadyPerform, true)) {
$urls[] = sprintf(
'/%s/%s/%s.html.twig', $params[$i], $params[$j], $template
);
}
}
$alreadyPerform[] = $params[$i];
$urls[] = sprintf('/%s/%s.html.twig', $params[$i], $template);
}
$urls[] = sprintf('%s.html.twig', $template);
return $urls;
}
这个函数之前一直按照我的要求工作(最多3个参数),但是今天我想要添加一个参数,可能以后还会加更多。
非常感谢您的帮助!
谢谢。