我正试图将一个函数传递到现有变量中,以设置模板中的特定位置。但是,当我使用功能开关时,我没有收到任何结果。
function posicionnavbar($posicion) {
switch ($posicion) {
case 'top':
return 'top';
case 'soc':
return 'soc';
case 'nav':
return 'nav';
case 'usr':
return 'usr';
}
}
以及我试图附加到的变量。
$omni[posicionnavbar($tabs['position'])] .= $nuevo_tab;
更多信息:
$tabs['position']
是-top、soc、nav或usr
$omni***
是我的模板中用于每个位置的变量。IE:$omnitop
我已经在模板中使用$omni .= $nuevo_tab;
和$omni
传递了变量,以确认一切正常,并取得了成功。这导致我的功能出现了问题。
如何将函数传递到变量中以更改变量名?
最终结果将输出以下内容之一:
$omnitop .= $nuevo_tab;
$omnisoc .= $nuevo_tab;
$omninav .= $nuevo_tab;
$omniusr .= $nuevo_tab;
我确实设法解决了这个问题。
${'omni'.posicionnavbar($tabs['position'])} .= $nuevo_tab;
感谢PHP食谱
知道了将变量连接在一起的正确符号,我完全摆脱了开关和函数。我设置${'omni'.$tabs['position']} .= $nuevo_tab;
的方式足以完成这项工作。
您还可以使用函数返回的键创建一个数组$omni。然后将更容易迭代的结果
<?php
function posicionnavbar($posicion) {
switch ($posicion) {
case 'top':
return 'top';
case 'soc':
return 'soc';
case 'nav':
return 'nav';
case 'usr':
return 'usr';
}
}
$tabs['position'] = 'top';
$nuevo_tab = "Something";
$omni[posicionnavbar($tabs['position'])] .= $nuevo_tab;
//let's imagine you got the value of $nuevo_tab here (for simulate the loop)
$omni['soc'] .= "Something related with soc";
$omni['nav'] .= "Something related with nav";
$omni['usr'] .= "Something related with usr";
foreach ($omni as $key => $value) {
echo "n";
echo "the key {$key} has the value -> {$value}";
}
不管怎样,你的答案是有效的。我提出的建议只是为了方便。如果将来你想访问似乎是相关的变量,用一个简单的循环