我试图将值连接成一个字符串,后来附加到一个隐藏的输入。
这是一个forach循环:
<?php
$langid = array();
$transLang = '';
foreach($translator['langs'] as $lang) {
$curlang = $lang->term_id;
$langid[] = $curlang;
$transLang .= '('.$curlang.'), ';
// for testing
echo $transLang."<br />";
}
?>
<input type="hidden" name="selectedLang" value="<?php echo $transLang; ?>" />
langid []数组正确抓取所有内容 但$ transLang回显到输入只显示第一个值,即:(3),
当我使用这一行时:
echo $transLang."<br />";
我为测试而添加了回音:
(3),
(3), (10),
(3), (10), (12),
(3), (10), (12), (27),
(3), (10), (12), (27), (19),
(3), (10), (12), (27), (19), (20),
最后一个是foreach完成运行后的完整字符串,但输入字段值始终只是第一次运行意味着(3),
知道为什么会这样吗?
答案 0 :(得分:1)
我试图进行虚拟测试。这是我的代码
<?php
$a = "";
$loop = array("1","2","3","4","5","6","7","8","9");
foreach($loop as $i){
$a .= "($i),";
}
?>
<input type="hidden" name="selectedLang" value="<?php echo $a; ?>" />
我得到以下输出
<input type="hidden" name="selectedLang" value="(1),(2),(3),(4),(5),(6),(7),(8),(9),">
或者你可以使用额外的array
来存储这些strings
和echo
最后index
所以你的代码将改为这个
<?php
$langid = array();
$strings = array();
$transLang = '';
foreach($translator['langs'] as $lang) {
$curlang = $lang->term_id;
$langid[] = $curlang;
$transLang .= '('.$curlang.'), ';
$strings[] = $transLang;
// for testing
//echo $transLang."<br />";
}
?>
<input type="hidden" name="selectedLang" value="<?php echo end($strings); ?>" />
我测试了我的虚拟值的两种方法,它对我来说很好。 首先尝试使用第二种方法。
答案 1 :(得分:1)