Estoy tratando de pasar una función a una variable existente para establecer ubicaciones específicas dentro de mi plantilla. Sin embargo, cuando uso el interruptor de función, no obtengo ningún resultado.
function posicionnavbar($posicion) { switch ($posicion) { case 'top': return 'top'; case 'soc': return 'soc'; case 'nav': return 'nav'; case 'usr': return 'usr'; } }Y la variable a la que intento agregar.
$omni[posicionnavbar($tabs['position'])] .= $nuevo_tab;Más información:
$tabs['position']Es superior, soc, nav o usr
$omni*** Es la variable utilizada dentro de mi plantilla para cada ubicación. IE: $omnitop
He pasado la variable usando $omni .= $nuevo_tab; y usando $omni dentro de mi plantilla para confirmar que todo estaba funcionando, con éxito. Lo que me lleva a que algo esté mal con mi función.
¿Cómo puedo pasar mi función a mi variable para cambiar el nombre de la variable?
los resultados finales generarían uno de los siguientes:
$omnitop .= $nuevo_tab; $omnisoc .= $nuevo_tab; $omninav .= $nuevo_tab; $omniusr .= $nuevo_tab;Logré resolver esto.
${'omni'.posicionnavbar($tabs['position'])} .= $nuevo_tab;gracias a PHP Cookbook
Al conocer los símbolos adecuados para vincular las variables, me deshice del interruptor y la función por completo. La forma en que tengo esto configurado ${'omni'.$tabs['position']} .= $nuevo_tab; es suficiente para hacer el trabajo.
También puede crear una matriz $omni con claves devueltas por su función. Entonces será más fácil iterar sobre los resultados.
<?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}"; }De todos modos, tu respuesta es válida. El que he propuesto es solo por conveniencia. Por si en el futuro quieres acceder a lo que parecen ser variables que están relacionadas, con un simple bucle