我有以下PHP代码替换URL结构中的文件夹名称,以方便切换语言,同时保持当前页面:将关联数组(和foreach循环)转换为数组无关键(while循环?)
<?php
$langs = array(
"en/" => "en.png",
"de/" => "de.png",
"fr/" => "fr.png"
);
$self = $_SERVER['REQUEST_URI'];
$pattern = "{^.*/}i";
$links = array();
foreach ($langs as $folder => $flag) {
$url = preg_replace($pattern, "$folder", $self);
$link = "<li><a href=\"../$url\"><img src=\"../img/$flag\"></a></li>";
array_push($links, $link);
}
echo implode($links) . "\n";
?>
但是,我已经意识到,用一个简单的数组读取$langs = array("en", "de", "fr");
我可能会节省几个字节并简化代码的下半部分,重新使用文件夹和图像的变量?这会是一个更好的做事方式吗?如何?
这是我到目前为止,但$langs['$x']
似乎不对? (事实上,我得到一个语法错误在我的循环条件!):
$langs = array("en", "de", "fr");
$n = count($langs); // 3
while ($x = 0; $x < $n; $x++) {
$folder = $langs['$x'] . "/";
$flags = $langs['$x'] . ".png";
echo $folder . " " . $flags; // test
}
为什么“节省几个字节”物质双引号? –
我不仅试图让自己的代码尽可能小,而且试图为我们的网站构建一个尽可能简单的模板系统。通过“迫使”人们使用特定的文件夹结构/图像名称,这意味着推出新网站应该简单得多,只需要更少的代码行。 – mpdc
@MatthewPeckham,为什么不使用现有的模板系统?有很多可供选择的。 – Chris