php - 从单个 While 循环创建多个变量并执行它
问题描述
我一直在尝试执行以下操作:我已将主题存储在以逗号分隔的数据库中以创建一个数组。然后,我正在运行一个 foreach 循环,以便在对象被分解后获取它们。我被卡住的部分是我试图根据主题名称创建变量,然后运行一个 mysqli 代码,该代码将根据我应该设置的主题名称从 DB 中的另一个表中获取信息。
我试过使用 eval,它在我运行代码时不显示任何内容。
$hwvar = "";
$hwsubject = "";
foreach ($hwarray as $hwvar) {
eval("$hwvar = $row".""."['$hwvar']");
}
?>
<td><?php echo $hwvar; ?></td>
所以我需要循环来为每个项目生成以下内容是循环($sujectname 是从数据库中存储和派生的内容,例如 homework1)$subjectname = $row['$subjectname'];
解决方案
只输出循环内部会更简单、更安全(eval() 在坏人手中是一个危险的函数)<TD>
foreach ($hwarray as $hwvar) {
$dat = $row[$hwvar];
echo "<td>$dat</td>";
}
?>
注意:
eval()
出于各种原因,应该不惜一切代价避免。最容易理解的是,在全局范围内动态创建变量有可能覆盖一个或多个现有变量,这使得调试成为一场彻头彻尾的噩梦。
更新,评论后
我没有你的数据库,所以我模拟了一个简单的例子来说明我假设你在做什么
// dummy database result containing 2 result rows
$rows = [['home'=>'100', 'home2'=> '200'],['home'=>'300', 'home2'=> '400']];
// yoour list of required columns
$hwarray = ['home','home2'];
// loop over the query resultset
// your code might be a while loop over a fetch like
// while ($row = $result->fetch_assoc()){
// for example
foreach ($rows as $row){
foreach ($hwarray as $hwvar) {
echo "<td>$row[$hwvar]</td>";
}
}
推荐阅读
- google-translate - 从@google-cloud/translate 得到非常慢的响应
- spring-boot - 如何将自定义弹簧方面注释传递给建议
- html - 如何传递数组代替指向函数的指针
- kubernetes-ingress - 在 aks 中从入口控制器公开多个 tcp 端口
- ruby - Xcode 12、Mac OS 10.15、用于安装 cocoapods 的 Xcode 服务器预集成脚本
- docker - 等待容器的 Docker 错误:上下文已取消
- android - 当列表包含多个 sku productId 时 params.setSkusList(list) 不起作用
- php - PHP JSON API - 检测返回值的数据类型
- sed - sed:如何用文件内容替换单个单词
- linux - 无法通过 shell 脚本在文件中创建和写入内容