⊗ppPmLpFl 124 of 447 menu

Trabajo con banderas en PHP

Ahora aprenderemos a trabajar con banderas. Una bandera es una variable especial que solo puede tomar dos valores: true y false. Con la ayuda de banderas se pueden resolver tareas que verifican la ausencia de algo: por ejemplo, se puede verificar que en un array no hay un elemento con un valor determinado. Vamos a empezar.

Resolvamos la siguiente tarea: dado un array con números, hay que comprobar si hay en él un elemento con el valor 3 o no. Si lo hay - imprimiremos '+++', si no - imprimiremos '---'.

Para empezar, intentemos imprimir '+++'. Para ello, recorreremos todos los elementos de nuestro array y con un if preguntaremos - ¿es igual el elemento actual al valor 3? Si es igual - imprimiremos '+++':

<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; } } ?>

Pero nuestra solución no es muy buena: porque si en el array hay no un valor 3, sino varios, entonces '+++' se imprimirá varias veces. Modifiquemos nuestro array (hagamos dos elementos con el valor 3) y convenzámonos de ello:

<?php $arr = [1, 2, 3, 4, 3, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // imprimirá varias veces } } ?>

Arreglemos el problema: terminemos el ciclo con la ayuda de break, si el elemento ya fue encontrado:

<?php $arr = [1, 2, 3, 4, 3, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; break; // terminamos el ciclo } } ?>

Ahora intentemos hacer que, si en el array no hay en absoluto elementos con el valor 3, se imprima '---'. Un error común sería añadir else a nuestro if - en este caso '---' se imprimiría para todos los elementos que no sean 3:

<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // imprimirá en el elemento 3 } else { echo '---'; // imprimirá en los elementos 1, 2, 4, 5 } } ?>

Entonces, la idea de añadir else es mala y no funciona. Para resolver tareas de este tipo (estas tareas se encuentran con bastante frecuencia) se utilizan las llamadas banderas.

Como se mencionó anteriormente, una bandera es una variable que puede tomar dos valores: true o false.

Entonces, hagamos una variable flag con este significado: si es igual a true, entonces en el array hay un elemento 3, y si es false, entonces no hay tal elemento.

Inicialmente, pongamos la variable flag en el valor false - es decir, supondremos que el elemento 3 no está en el array:

$arr = [1, 2, 3, 4, 5]; $flag = false; // consideramos que el elemento 3 no está en el array

Luego, iniciaremos un ciclo con un if tal como lo hicimos antes. Si el ciclo detecta que en el array hay un elemento 3, entonces pondrá la variable flag en el valor true y saldrá del ciclo con break:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; // consideramos que el elemento 3 no está en el array foreach ($arr as $elem) { if ($elem === 3) { $flag = true; // el elemento existe - redefinimos la variable $flag break; // salimos del ciclo } } ?>

La respuesta a la pregunta de si hay 3 en el array o no, solo podemos darla después del ciclo. Y esta respuesta ya la tenemos: después del ciclo la variable flag pudo permanecer en false o pudo cambiar su valor a true, si el ciclo detectó un 3 en el array:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } // aquí la variable $flag es igual a true o false ?>

Ahora, después del ciclo, podemos hacer un if que mire la variable flag e imprima en pantalla '+++' o '---':

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } if ($flag === true) { echo '+++'; } else { echo '---'; } ?>

Dado un array:

<?php $arr = ['a', 'b', 'c', 'd', 'e']; ?>

Compruebe que en este array hay un elemento 'c'. Si lo hay - imprima '+++', y si no - imprima '---'.

Escriba un código que compruebe si un número es primo o no. Un número primo es divisible solo por uno y por sí mismo, y no es divisible por otros números.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar