Php 将关联数组(和foreach循环)转换为无键数组(和while循环?)

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代码替换URL结构中的文件夹名称,以便在保持当前页面的同时轻松切换语言:

<?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
}