patternphpMinor
Simplifying an associative array()
Viewed 0 times
arrayassociativesimplifying
Problem
Would it be better to convert the array in the following code to
and then reusing the values for both
I'm trying to "fool proof" the code, by effectively limiting the folder structures and file names that can be used, as I create a basic template of files for quick rolling out of our websites. If you can see any other improvements, that would be much appreciated.
$langs = array("en", "de", "fr");and then reusing the values for both
$folder and $flag? If so, how then would my foreach (or maybe a while?) loop be written? "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 = "";
array_push($links, $link);
}
echo implode($links) . "\n";
?>I'm trying to "fool proof" the code, by effectively limiting the folder structures and file names that can be used, as I create a basic template of files for quick rolling out of our websites. If you can see any other improvements, that would be much appreciated.
Solution
You can definitely simplify this, as the only part of each element of
You just use a non-associative array and append
$langs that changes is the two-letter language code. Something like this would work:";
array_push($links, $link);
}
echo implode($links) . "\n";
?>You just use a non-associative array and append
/ or .png where needed; much cleaner.Code Snippets
<?php
$langs = array(
"en",
"de",
"fr"
);
$self = $_SERVER['REQUEST_URI'];
$pattern = "{^.*/}i";
$links = array();
foreach ($langs as $code) {
$url = preg_replace($pattern, "$code/", $self);
$link = "<li><a href=\"../$url\"><img src=\"../img/$code.png\"></a></li>";
array_push($links, $link);
}
echo implode($links) . "\n";
?>Context
StackExchange Code Review Q#41075, answer score: 2
Revisions (0)
No revisions yet.