我有以下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