Return 变量内函数的结果以更改变量

Return Results of a Function Within a Variable to Change the Varible

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

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***

是我的模板中用于每个位置的变量。即:$omnitop

我已经在我的模板中使用 $omni .= $nuevo_tab;$omni 传递了变量,以确认一切正常,并且成功。这导致我的功能出现问题。

如何将函数传递到变量中以更改变量名称?

最终结果将输出以下内容之一:

$omnitop .= $nuevo_tab;
$omnisoc .= $nuevo_tab;
$omninav .= $nuevo_tab;
$omniusr .= $nuevo_tab;

我确实设法解决了这个问题。

${'omni'.posicionnavbar($tabs['position'])} .= $nuevo_tab;

感谢PHP Cookbook

知道 link 变量的正确符号后,我完全摆脱了开关和功能。我的设置方式 ${'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}";
}

无论如何,你的回答是有效的。我提出的那个只是为了方便。以防将来你想通过一个简单的循环访问似乎相关的变量