Resulta que me encontre con este código:
<?php
$texto = "Esto es un ejercicio de repaso.";
$i=0;
do {
$i++;
}while ($texto[$i]!="u" && $i< strlen($texto));
if ($i==strlen($texto))
echo "En el texto no existe ninguna letra u.";
else
echo "La hemos encontrado. Está en la posición $i.";
?>
Bueno entiendo casi todo del código, lo que no entiendo es $texto[$i]!="u"
Saludos ;-)
while ($texto[$i]!="u" && $i< strlen($texto));
Se puede traducir como:
Mientras el contenido de la variable $texto sea distinto de "u" y el contador sea inferior al tamaño de la variable $texto....
Por lo que veo, el bucle recorre el contenido de una variable de texto y si se encuentra el carácter "u" se detiene.
!= es un operador para comparar. Significa no es igual a
Cita de: ||MadAntrax|| en 25 Noviembre 2013, 12:04 PM
while ($texto[$i]!="u" && $i< strlen($texto));
Se puede traducir como:
Mientras el contenido de la variable $texto sea distinto de "u" y el contador sea inferior al tamaño de la variable $texto....
Por lo que veo, el bucle recorre el contenido de una variable de texto y si se encuentra el carácter "u" se detiene.
!= es un operador para comparar. Significa no es igual a
gracias por responder..
pero la parte que no entiendo es la parte del [$i],¿es como si fuera un indice? osea el primer caracter que evalua es la 'E'? el recorrido ese lo hace gracias a la variable $i no?
Cita de: Senior++ en 25 Noviembre 2013, 12:35 PMpero la parte que no entiendo es la parte del [$i],¿es como si fuera un indice? osea el primer caracter que evalua es la 'E'? el recorrido ese lo hace gracias a la variable $i no?
Simon, se comporta como si fuera un array
Cita de: @shellroot en 25 Noviembre 2013, 14:16 PM
Simon, se comporta como si fuera un array
Hola gracias por contestar, entonces si yo hago esto:
$texto[$i]
quiere decir que es un 'simon'? :xD
entonces si la cadena en este caso es:
$texto = "Esto es un ejercicio de repaso.";
La letra E contiene el indice 1, la s el indice 2 y asi sucesivamente?
Lo siento pero no lo entendí bien...
A manera de pseudocódigo, sí! Pero en realidad el primer indice es 0, es decir,
$aNick = "shellroot";
for($i=0; $i <= strlen($aNick)-1; $i++):
echo "Letra [".$aNick[$i]."] en el indice [".$i."] <br/>";
endfor;
# Letra [s] en el indice [0]
# Letra [h] en el indice [1]
# Letra [e] en el indice [2]
# Letra [l] en el indice [3]
# Letra [l] en el indice [4]
# Letra [r] en el indice [5]
# Letra [o] en el indice [6]
# Letra [o] en el indice [7]
# Letra [t] en el indice [8]
Y lo de "simon", es una afirmación, SImon! -veo mucho los simpson :p-
Cita de: @shellroot en 25 Noviembre 2013, 15:21 PM
A manera de pseudocódigo, sí! Pero en realidad el primer indice es 0, es decir,
$aNick = "shellroot";
for($i=0; $i <= strlen($aNick)-1; $i++):
echo "Letra [".$aNick[$i]."] en el indice [".$i."] <br/>";
endfor;
# Letra [s] en el indice [0]
# Letra [h] en el indice [1]
# Letra [e] en el indice [2]
# Letra [l] en el indice [3]
# Letra [l] en el indice [4]
# Letra [r] en el indice [5]
# Letra [o] en el indice [6]
# Letra [o] en el indice [7]
# Letra [t] en el indice [8]
Y lo de "simon", es una afirmación, SImon! -veo mucho los simpson :p-
Ok ya entendí,gracias
Por cierto vi nas cuantas curiosidades en tu código:
en esta parte:
$i=0; $i <= strlen($aNick)-1; $i++
¿no sería mas facil de ponerlo así
$i=0; $i < strlen($aNick); $i++
¿seria lo mismo no?
La otra es que inicias un bucle for y lo terminas con un endfor ¿que diferencia hay entre ponerlo así o con {}? así:
$aNick = "shellroot";
for($i=0; $i <= strlen($aNick); $i++){
echo "Letra [".$aNick[$i]."] en el indice [".$i."] <br/>";
}
por lo demas todo entendido
Saludos y gracias de nuevo
Cita de: Senior++ en 25 Noviembre 2013, 16:35 PM
En esta parte:
$i=0; $i <= strlen($aNick)-1; $i++
¿no sería mas facil de ponerlo así $i=0; $i < strlen($aNick); $i++
¿seria lo mismo no?
R= No es lo mismo menor ( < ) a menor igual (<= ) , En el 1 caso entra hasta el último carácter de la cadena ( que es la t ).
En el 2 caso solo mostraría hasta la letra ( o ) faltaría por mostrar la t de root.
La otra es que inicias un bucle for y lo terminas con un endfor ¿que diferencia hay entre ponerlo así o con {}? así:
$aNick = "shellroot";
for($i=0; $i <= strlen($aNick); $i++){
echo "Letra [".$aNick[$i]."] en el indice [".$i."] <br/>";
}
Esto es otra variante de hacer un for. solo eso cuestión de gustos.
Cita de: ||MadAntrax|| en 25 Noviembre 2013, 12:04 PM
while ($texto[$i]!="u" && $i< strlen($texto));
Se puede traducir como:
Mientras el contenido de la variable $texto sea distinto de "u" y el contador sea inferior al tamaño de la variable $texto....
Por lo que veo, el bucle recorre el contenido de una variable de texto y si se encuentra el carácter "u" se detiene.
!= es un operador para comparar. Significa no es igual a
Me liastes con tu respuesta, dices mientras la variables $texto[$i] sea distinto de "u" se ejecuta el código pero que pasa cuando la variable $texto[$i] es igual a "u" ¿por que se sigue ejecutando el bloque de código del bucle while(osea el if)
Saludos
$aNick = "shelluroot";
for($i=0; $i <= strlen($aNick)-1; $i++):
if($aNick[$i] === 'u'):
echo "Letra u! muahahhaha 3:) <br/>";
exit();
else:
echo "Letra [".$aNick[$i]."] en el indice [".$i."] <br/>";
endif;
endfor;
Tiempo atras, cuando empezaba a programar no me gustaba utilizar el ciclo while, pero despues de un tiempo entendí qué: cada cosa se usa para cada cosa, es decir, hay casos en los que se DEBE de usar while...
Hola shellroot, enserio muchas gracias por ayudar, tu código con el for lo entiendo perfectamente, osea lo entiendo totalmente, pero no entiendo este código, este en especial del while
<?
$texto = "Esto es un ejercicio de repaso.";
$i=0;
do {
$i++;
}while ($texto[$i]!="u" && $i< strlen($texto));
if ($i==strlen($texto))
echo "En el texto no existe ninguna letra u.";
else
echo "La hemos encontrado. Está en la posición $i.";
?>
de ese código lo que no me entra en la cabeza es este codigo en especial:
while ($texto[$i]!="u"
Mientras $texto sea DISTINTO a "u"...
ok pero que pasa si $texto[$i] llega al valor 8 osea $texto[8], osea en el valor 8 se encuentra el caracter "u", y el while dice: mientras $texto sea DISTINTO, osea no es distinto ¿por que se sigue ejecutando todo lo que hay detras del bucle while? osea el if en ese momento no se deberia de ejecutar ¿por que se ejecuta?
En resumen: cuando llegue al indice 8 por que se ejecuta lo que hay detras del bucle while? si $texto[8] no es distinto al caracter 'u' , es igual
En el while se tiene la condición! En este caso es,
# SNIP
while( ($texto[$i] != "u") && ($i < strlen($texto)) ):
# SNIPP
Ahora lo que debes de entender es la logica de programación, operadores tales como: OR, AND, Xor, Not,... Para este ejemplo, se tiene el operador AND ( && ).
Entonces para el while se tienen 2 condiciones,
1er Condición: El caracter en la posición indice ($i) sea diferente de 'u'.
Y
2da Condición: El tamaño de caracteres debe de ser menor del texto recorrido.
Para que el while funcione, se deben de cumplir las dos condiciones, cuando una de ellas sea falsa, el ciclo termina! -caso diferente al tener el operador OR (||, que es cuando se cumplen 1 de las 2 condiciones)-
Cita de: @shellroot en 25 Noviembre 2013, 20:34 PM
En el while se tiene la condición! En este caso es,
# SNIP
while( ($texto[$i] != "u") && ($i < strlen($texto)) ):
# SNIPP
Ahora lo que debes de entender es la logica de programación, operadores tales como: OR, AND, Xor, Not,... Para este ejemplo, se tiene el operador AND ( && ).
Entonces para el while se tienen 2 condiciones,
1er Condición: El caracter en la posición indice ($i) sea diferente de 'u'.
Y
2da Condición: El tamaño de caracteres debe de ser menor del texto recorrido.
Para que el while funcione, se deben de cumplir las dos condiciones, cuando una de ellas sea falsa, el ciclo termina! -caso diferente al tener el operador OR (||, que es cuando se cumplen 1 de las 2 condiciones)-
entiendo todo eso, pero para que usted lo entienda a lo que me refiero con un codigo mas sencillo:
$i = 1;
while($i != 10){
$i++;
echo $i."<br />";
}
¿por que imprime en pantalla el numero 10, si el 10 no es distinto de 10?
·_·
Cuestion de logica. Incrementas y imprimes antes de comprobar el numero. Osease... el while llega a 9!=10 y ejecuta lo que hay dentro, inmediatamente se suma uno (10) y se impime.
$i = 1;
while($i != 10){echo $i."<br />"; ++$i;}
Saludos
:xD era un ejemplo para que entendiera lo que queria decirle del código anterior...
bueno ya entendí todo
Gracias
A mi me imprime sólo hasta 9 :silbar:
$i = 1;
while($i != 10):
echo $i."<br />";
$i++;
endwhile;
1
2
3
4
5
6
7
8
9