返回变量中函数的结果以更改变量



我正试图将一个函数传递到现有变量中,以设置模板中的特定位置。但是,当我使用功能开关时,我没有收到任何结果。

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}";
}

不管怎样,你的答案是有效的。我提出的建议只是为了方便。如果将来你想访问似乎是相关的变量,用一个简单的循环

最新更新