Pregunta:
Fecha: 24-09-2019 16:11:12
(En Español)
Necesito rescatar el valor de una variable que está dentro de un if anidado.
código ejemplo
Lo que busco es poder usar el valor de $dato fuera de los dos primeros if. y mostrar $dato en el tercer if.
Nota: Solo obtengo los valores de $dato dentro del los dos primeros if, fuera de estos no.
- he intentado declarando la variable $dato fuera de los if, pero aún no tengo resultados.
Saludos Votos: 0 - Respuestas: 10 - Vistas: 12 Compartir en: Google Facebook Twitter LinkedIn Link
¿Cómo obtener el valor de una variable PHP dentro de dos IF anidados?[No resuelta]
Hola como están, espero me puedan ayudar con un inconveniente que tengo al obtener el valor de una variable.Necesito rescatar el valor de una variable que está dentro de un if anidado.
código ejemplo
<?php
if (prueba == test){
if( a == texto1 ) {
$dato = 1;
echo $dato;
} elseif (a== texto2){
$dato = 2 ;
echo $dato;
}else{
echo "no hay datos";
}
}
if ( prueba2==test2){
echo $dato;
}
?>Lo que busco es poder usar el valor de $dato fuera de los dos primeros if. y mostrar $dato en el tercer if.
Nota: Solo obtengo los valores de $dato dentro del los dos primeros if, fuera de estos no.
- he intentado declarando la variable $dato fuera de los if, pero aún no tengo resultados.
Saludos Votos: 0 - Respuestas: 10 - Vistas: 12 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 25-09-2019 08:20:44 Debes proporcionar mas informacion (De preferencia el codigo que tienes) y un ejemplo de que no te sale, ya que asi no se entiende bien... tratare de contestar segun lo que entendi.
$dato=''; if(condicion) { if(condicion) { $dato=algo; } } hacerAlgocondato($dato);
¿Algo asi ?
Si es asi, para que sepas si puedas ocupar o no, te recomiendo que mejor:
No declares la variable datos desde un inicio, solo cuando realmente tengas el dato asi solo preguntas si existe dato, ejemplo:
if(condicion) { if(condicion) { $dato=algo; } } if(isset($dato)) { hacerAlgocondato($dato); } else { accioncontrariasinotengodato(); }
En caso de no ser la solucion a tu problema, expresate mejor con mas codigo y ejemplificando el problema...
Saludos Terricola...
Stryfe™ Votos: 0 - Link respuesta -
Fecha: 25-09-2019 11:16:56 Ernesto, no se porque no se mostraba el código, pero ya lo coloque nuevamente.
espero que con esto sea más claro lo que necesito.
Saludos
<?php if (prueba == test){ if( a == texto1 ) { $dato = 1; echo $dato; } elseif (a== texto2){ $dato = 2 ; echo $dato; }else{ echo "no hay datos"; } } if ( prueba2==test2){ echo $dato; } ?>Votos: 0 - Link respuesta -
Fecha: 26-09-2019 07:14:56 Oye, y porque no pruebas gardar el valor de $dato en una session para poderlos tener a fuera de esos dos If, creo que eso te pueda servir
$_SESSION['info'] = $dato
Votos: -1 - Link respuesta -
Fecha: 26-09-2019 09:10:01 De la siguiente forma controlaras mejor ello...
<?php
/* Primero definimos $dato */
$dato=0; /* quiere decir que no ha hecho nada */
if (prueba == test){ /* no se que sea prueba ni que sea test asi que dejare igual tu condicion */
if( a == texto1 ) { /* igual no se que sea a y que sea texto1 lo dejare igual */
$dato = 1;
/* echo $dato; no mandamos a pantalla aun */
} elseif (a== texto2){
$dato = 2 ;
/* echo $dato; no mandamos a pantalla aun */
}else{
/* echo "no hay datos"; igual no mandamos a pantalla */
}
/* solo mandas echo aqui */
if($dato!=0) {
echo $dato;
} else {
echo 'no hay datos';
}
} else if ( prueba2==test2){ /* ni idea que es esta condicion pero se quedara igual */
echo $dato; /* dejamos igual */
} else {
/*
Aqui algo que quieras que se ejecute si ninguna de las conficiones anteriores se cumple
ejemplo: echo 'Dato es igual a 0, o no se cumplio ninguna condicion...';
*/
}
?>
Saludos Terricola
Stryfe™ Votos: 0 - Link respuesta -
Fecha: 26-09-2019 10:51:50 amigo tienes que entender cual el ciclo de vida de una variable que la definas dentro de un ciclo o condición o método no significa que la vas a poder usar en todo el sistema ya que estas cumplen con un ciclo de vida según al ámbito al que pertenezcan te dejo esta información espero sea de tu interés
ámbito de variables en php Votos: 2 - Link respuesta -
Fecha: 26-09-2019 16:07:52 Gracias por su aporte, estaré implementando las soluciones propuestas y les comento como me va. Votos: 0 - Link respuesta
-
Fecha: 27-09-2019 09:34:09 Buenas tardes muchachos.
Lamentablemente aún no he podido solucionar el problema.
Realice las pruebas correspondientes a su sugerencia.
1. $_SESSION['info'] = $dato , en esta prueba no fue posible asignarle el valor de $dato a la variable
$_SESSION['info'] , exepto cuando esta asignación se realiza dentro del if donde se le da un valor a
$dato > if( a == texto1 ) {
$dato = 1;
echo $dato;
}
En pocas palabras el valor de $dato no se obtiene fuera del if.
2. También implemente lo que plantea Ernesto, pero aún sigo sin obtener el valor de $dato fuera del if
mencionado
3. He declarado el ámbito de la variable global, $GLOBALS y fuera de los if, pero no funciona.
Gracias, seguiré buscando la solución. si se les ocurre algo más les agradezco. Votos: -1 - Link respuesta -
Fecha: 27-09-2019 10:27:16 Como bien mencionan esto es cuestión de scope o ámbito de la variable.
Prueba declarar la variable en un ámbito superior.
Juega con el siguiente código:
<?php $prueba = 'valor de prueba'; $prueba2 = 'valor de prueba 2'; $test = 'valor de test'; $test2 = 'valor de test2'; $a = 'valor de a'; $texto1 = 'valor de texto1'; $texto2 = 'valor de texto2'; $dato = 'valor inicial'; echo "\$dato vale '{$dato}'"; if ($prueba === $test) { $dato = 'no hay datos'; if ($a === $texto1) { $dato = 1; } elseif ($a === $texto2) { $dato = 2; } } echo "Aquí \$dato vale '{$dato}'"; if ($prueba2 === $test2) { echo $dato; }Votos: 1 - Link respuesta -
Fecha: 30-09-2019 09:15:19 A mi parecer el problema es que no estas declarando variables ni strings para compararlas. Por ejemplo:
if (prueba == test)
en realidad debe ser:if ($prueba == "test")
Votos: 0 - Link respuesta -
Fecha: 30-09-2019 11:56:33 Buenas tardes, agradezco sus aportes!
Efectivamente el código enviado por Ernesto Peimbert, funciona, pero al adaptarlo a mi código no me da el resultado esperado.
Traigo un acercamiento más real a mi código esperando que tengan aún más claridad del problema que planteo.
Nota: El código funciona en cada una de sus secciones, es decir arroja los valores esperados, recuerdo que lo único que no logro es acceder al valor de la variable $custom_id fuera del IF , este valor lo necesito en otra parte del código.
Ya probe con los ambitos de las variables $_SESSION, global, $GLOBALS y la variable declarada fuera de los if, pero no funciona.
Recalco: No se fijen en el funcionamiento del código como tal, porque si funciona, solo me falta es acceder al valor de la variable $custom_id desde cualquier parte del código.
Muchas gracias y espero me sigan colaborando.
$customer_id='0'; if (servicio_recibido("SelecServicio")) { // llamado a funcion, si se recibe el parametro correcto la funcion devuelve true (esto funciona OK) $servicio = obtener_variables()['servicio']; // llamado a funcion, si se recibe el valor de una variable se le asigna el valor a $servicio (esto funciona OK) if ($servicio == "Hotel") { // se compara el valor de $servicio con uno valor (esto funciona OK) $customer_id ='7'; // si el valor de $servicio es Hotel, se le asigna a $customer_id el valor 7 (esto funciona OK) echo ("$servicio $customer_id ¿En qué ciudad te encuentras, ciudad X, ciudad Y , ciudad Z ?");// esto comprueba el valor de $servicio y $customer_id ( Funciona OK) }elseif ($servicio == "Restaurante") { // se compara el valor de $servicio con uno valor (esto funciona OK) $customer_id ='8';// si el valor de $servicio es Restaurante, se le asigna a $customer_id el valor 8 (esto funciona OK) echo ("$servicio $customer_id ¿En qué ciudad te encuentras, ciudad X, ciudad Y , ciudad Z ?");// esto comprueba el valor de $servicio y $customer_id ( Funciona OK) } else { echo("Por favor selecciona un servicio Hotel ó Restaurante "); }Votos: -1 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
