Php 将关联数组(和foreach循环)转换为无键数组(和while循环?)
我使用以下PHP代码替换URL结构中的文件夹名称,以便在保持当前页面的同时轻松切换语言:Php 将关联数组(和foreach循环)转换为无键数组(和while循环?),php,arrays,Php,Arrays,我使用以下PHP代码替换URL结构中的文件夹名称,以便在保持当前页面的同时轻松切换语言: <?php $langs = array( "en/" => "en.png", "de/" => "de.png", "fr/" => "fr.png" ); $self = $_SERVER['REQUEST_URI']; $pattern = "{^.*/}i"; $links =
<?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");
$n = count($langs); // 3
while ($x = 0; $x < $n; $x++ ) {
$folder = $langs["$x"] . "/";
$flags = $langs["$x"] . ".png";
echo $folder . " " . $flags; // test
}
$langs=数组(“en”、“de”、“fr”);
$n=计数($langs);//3.
而($x=0;$x<$n;$x++){
$folder=$langs[“$x”]。“/”;
$flags=$langs[“$x”]。.png”;
echo$folder.“.”$flags;//测试
}
为什么“节省几个字节”很重要?我不仅试图让代码尽可能小,还试图为我们的网站构建一个尽可能简单的模板系统。通过“强制”人们使用特定的文件夹结构/图像名称,这意味着推出新网站应该简单得多,所涉及的代码行应该少得多。@MatthewPeckham,为什么不使用现有的模板系统呢?有很多选择。不幸的是,我们无法重新设计我们正在使用的网站。我所能做的就是改进和“自动化”现有代码;清理CSS,将常用的术语移到变量,然后包含,翻译到.ini文件等等。考虑在CODReVIEW.STACKExchange .com上问这个问题。我可以提出一些其他的建议,但它们不在这个问题的主题上。
$array = array('a' => 'A', 'b' => 'B', 'c' => 'C');
// array(0 => 'A', 1 => 'B', 2 => 'C');
$new_array = array_values($array);
$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
}