Los consulto por un problema que tengo que no se me ocurre como resolver, tengo una posible solución pero que no me convence.
Lo que necesito es hacer una asociación bidireccional entre dos string, por ejemplo:
Dirección 1:
Humano -> Perro
Gato -> Raton
Vaca -> Queso
Direccion 2:
Perro -> Humano
Raton -> Gato
Queso -> Vaca
Lo que quiero hacer es una función que reciba la dirección y el valor de origen y devuelva el de destino, la posible solución que se me ocurrió es esta:
Código PHP:
Ver original
<?php function bi_direccional($clave, $es_clave = true) { $asociaciones = []; $asociaciones["humano"] = "perro"; $asociaciones["gato"] = "raton"; $asociaciones["vaca"] = "queso"; if($es_clave) return $asociaciones[$clave]; else }
La cual funciona, pero el problema es que levanta a memoria todo el array, y este va a tener varios miles de elementos con lo cual el consumo de memoria va a ser grande.
Asi que pense otra solucion:
Código PHP:
Ver original
function bi_direccional($clave, $es_clave = true) { if($es_clave) { switch($clave) { case "humano" : $valor = "perro"; break; case "gato" : $valor = "raton"; break; case "vaca" : $valor = "queso"; break; } } else { switch($clave) { case "perro" : $valor = "humano"; break; case "raton" : $valor = "gato"; break; case "queso" : $valor = "vaca"; break; } } return $valor; }
Pero que problema, esta no consume memoria pero tengo que escribir dos veces el switch y como son muchos valores tampoco me sirve.
Cabe destacar que todos estos valores los escribo a mano en script, son estáticos y no proceden de ninguna base de datos.
¿Se les ocurre alguna otra forma de solucionar el inconveniente?