我的PHP代码哪里出错了?如何将循环结果存入变量并输出城市列表
修正PHP字符串拼接中的循环问题
我来帮你搞定这个问题~你当前的代码核心错误在于不能直接在字符串拼接操作里嵌入foreach循环,PHP的语法规则不允许这种写法,会直接触发语法错误。咱们可以用两种常见的方式来修正:
方法一:分步拼接字符串
这是最直观的写法,把字符串拆分成开头、循环体、结尾三个部分来处理:
$list_of_cities = ['Delhi', 'Patna']; // 先初始化开头的HTML内容 $display = "<p>Cities</p><p><ul>"; // 遍历城市数组,逐个追加<li>标签到变量中 foreach($list_of_cities as $city) { $display .= "<li>" . $city . "</li><br>"; } // 最后拼接结尾的HTML和链接 $display .= "</ul></p><p><a href='" . get_site_url() . "/contact-us/'>Test</a></p>";
这样拆分后,变量$display会逐步累积所有需要的HTML内容,完全符合你的需求。
方法二:用array_map + implode简化写法
如果想让代码更紧凑,可以用数组处理函数来减少循环的代码量:
$list_of_cities = ['Delhi', 'Patna']; // 把每个城市转换成对应的<li>标签 $city_html_items = array_map(function($city) { return "<li>" . $city . "</li><br>"; }, $list_of_cities); // 拼接所有内容:开头 + 处理后的城市列表 + 结尾 $display = "<p>Cities</p><p><ul>" . implode('', $city_html_items) . "</ul></p><p><a href='" . get_site_url() . "/contact-us/'>Test</a></p>";
array_map会遍历数组把每个元素转换成指定的HTML格式,implode则把所有转换后的字符串合并成一个整体,再和前后的HTML拼接即可。
两种方法都能实现你要的功能,你可以根据自己的代码风格选择~
内容的提问来源于stack exchange,提问作者Javed Akhtar
相关产品推荐
相关产品推荐

