2016-10-25 25 views
1

我试图从数组中实现动态$行值,并将它们显示为输出。价值已经在那里时,它一直不显示任何东西。

这是我到目前为止,其中:

$row["lg_".$val.""];应该返回:

$lg_it 

'它' 是从数组中$ VAL。

foreach($arrMapCookieToLang as $key => $val) { 
    $shrtKey = $row["lg_".$val.""]; 

    <input type="text" name="lg_$val" value="$shrtKey"> 
} 

任何想法?

+3

如果这一切都在你会想'回声PHP标签 “”;' 。不过,PHP标签以外的HTML并不需要“回声”。 – PHPglue

回答

1

你有什么要导致一个语法错误。请尝试以下操作:

<?php 
foreach($arrMapCookieToLang as $key => $val) { 
    $shrtKey = $row['lg_'.$val]; 
    ?> 
    <input type="text" name="lg_<?= $val ?>" value="<?= $shrtKey ?>"> 
    <?php 
} 
+1

该解决方案假定启用了php短标签。你不能依赖这一点 - 尤其是在共享主机环境中。 – Andreas

+0

@Andreas短回声标签是从5.4版本开始给出的,并且此解决方案与OP的原始代码保持非常接近。 – Progrock

+0

修改了一下,但这个先给我看我的错误。感谢您的帮助! – KJS

0
Instead, the 
<input type="text" name="lg_$val" value="$shrtKey"> 

也许你应该使用

echo "<input type=\"text\" name=\"lg_" . "$val\" value=\"$shrtKey\">"; 
+1

如果将变量连接到输入属性,为什么要转义双引号而不是使用单个qoutes作为echo-expression?这对代码可读性要好得多(请参阅上面的解决方案) – Andreas

+0

是的,同意你的变体更具可读性。但是这个变体也是有意义的。 – Mistery

1

你已经错过了呼应你的输入字段:

foreach($arrMapCookieToLang as $key => $val) { 
    $shrtKey = $row["lg_".$val.""]; 
    echo '<input type="text" name="lg_' . $val .'" value="' . $shrtKey . '">'; 
} 

此外,如果你不使用的foreach -loop数组键,可以省略$key =>双组分和只写

foreach($arrMapCookieToLang as $val) { 
    // ... 
}