2 回答
TA贡献1799条经验 获得超9个赞
唯一的区别是正在加载的单词和变量的名称。单词保持不变,但变量是小写的。
因此,您需要做的就是loadViev将$setVal名称(单词本身)作为第一个参数,并将$$setval其作为第二个参数。这使用变量 variables将单词作为变量执行。
不幸的是,您不能(轻松)strtolower()直接在变量变量上使用类似的东西,因此您必须首先将它们独立地转换为小写。
这可以在下面看到:
$results =[];
foreach ($userChoice as $key => $value) {
$setVal = $value['key'];
$results[$setVal] = $value['order'];
if ($value['order'] == 0) {
$lower = strtolower($setVal);
loadViev($setVal, $$lower, $careerGoals, $mainSectionLines);
}
}
TA贡献1786条经验 获得超11个赞
如何创建一个包含相关值的结构并对其进行迭代?
$mapping = [
['key' => 'experience', 'view' => 'experience','data' => $experience],
['key' => 'Education', 'view' => 'Education','data' => $graduate],
['key' => 'Extra', 'view' => 'Extra','data' => $extra],
...
...
];
foreach ($mapping as $m)
{
if ($results[$m['key']]==0)
{
loadViev($m['view'], $m['data'], $careerGoals,$mainSectionLines);
break;
}
}
如果您可以使您的键/变量名称一致,则可以进一步简化代码。例如
$validKeys = ['experience', 'education', ... ];
foreach($validKeys as $k)
{
if($results[$k] == 0)
{
loadviev($k, $$k, $careerGoals,$mainSectionLines)
}
}
- 2 回答
- 0 关注
- 102 浏览
添加回答
举报