Foros del Web » Programando para Internet » PHP »

Juego: "¿Dónde está el error?"

Estas en el tema de Juego: "¿Dónde está el error?" en el foro de PHP en Foros del Web. Exacto. Caso 3) Cuando Bar es un alias de Foo (o viceversa) Tu turno....
  #211 (permalink)  
Antiguo 18/01/2011, 10:15
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Juego: "¿Dónde está el error?"

Exacto. Caso 3) Cuando Bar es un alias de Foo (o viceversa)

Tu turno.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #212 (permalink)  
Antiguo 18/01/2011, 11:58
 
Fecha de Ingreso: mayo-2008
Mensajes: 117
Antigüedad: 16 años, 6 meses
Puntos: 8
Respuesta: Juego: "¿Dónde está el error?"

eeee cedo mi turno a Panino5001(Si no quiere a quien quiera)... se me da bien descifrar cosas, pero no cifrarlas jaaaj
  #213 (permalink)  
Antiguo 19/01/2011, 06:11
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por abimaelrc Ver Mensaje
PD: David ¿por qué usas los hexádecimales en el preg_match?
Mientras alguien más lanza su tiro... esa es la expresión regular oficial para un nombre de función/constante/etc válido. Así que lo que la función verifica es que: no exista una función o constante con ese nombre, que sea un nombre válido y que no se pueda definir una función con ese nombre (lo único que podría cumplir con todas esas condiciones es una palabra reservada)

Técnicamente en lugar de definir una función debería poder hacerse con una constante, ya que el manual indica que no se puede usar una palabra reservada como nombre de constante; pero eso no es del todo cierto (por lo menos no en todas las versiones de PHP)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #214 (permalink)  
Antiguo 19/01/2011, 12:23
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Bueno lo pregunté, porque en los hexadecimales tienes caracteres que no se usarán en constantes o nombres de función como por ejemplo
\xff = ÿ
Ahora, me da mucha curiosidad lo de expresión regular oficial. ¿Dónde podría conseguir esa información para aprender más?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #215 (permalink)  
Antiguo 19/01/2011, 12:49
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Juego: "¿Dónde está el error?"

Del manual:
Cita:
Function names follow the same rules as other labels in PHP. A valid function name starts with a letter or underscore, followed by any number of letters, numbers, or underscores. As a regular expression, it would be expressed thus: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*.
http://www.php.net/manual/en/functions.user-defined.php
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #216 (permalink)  
Antiguo 24/01/2011, 09:42
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 6 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

¿Cuál es la forma de decir exactamente lo mismo con un bucle foreach?

Código PHP:
Ver original
  1. for($i = 0; $i <= 6; $i++)
  2.     $var .= $array[$i]['productos'];
Nótese que no me refiero al logro del mismo resultado, sino a la correcta construcción de la sintaxis para que PHP reciba exactamente la misma cadena de instrucciones.

Última edición por metacortex; 24/01/2011 a las 09:53
  #217 (permalink)  
Antiguo 24/01/2011, 09:51
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Ehhhh, ese código tiene un error, en vez de ser $n, debe ser $i. Así que te debes dar un vistazo a la regla 8.
Cita:
8.- Si el autor comete un error imprevisto (es decir, que no haya sido intencional sino que falló por bobo) lo enviaremos a pasar un fin de semana romántico con la vecina de abimaelrc.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #218 (permalink)  
Antiguo 24/01/2011, 09:53
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 6 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Jajajaja ya lo edité, gracias.

Noooo!! mald... regla!
  #219 (permalink)  
Antiguo 24/01/2011, 09:57
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por metacortex Ver Mensaje
¿Cuál es la forma de decir exactamente lo mismo con un bucle foreach?

Código PHP:
Ver original
  1. for($i = 0; $i <= 6; $i++)
  2.     $var .= $array[$i]['productos'];
Nótese que no me refiero al logro del mismo resultado, sino a la correcta construcción de la sintaxis para que PHP reciba exactamente la misma cadena de instrucciones.


Código PHP:
Ver original
  1. foreach (range(0, 6) as $i)
  2.     $var .= $array[$i]['productos'];

?
  #220 (permalink)  
Antiguo 24/01/2011, 10:00
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por metacortex Ver Mensaje
Jajajaja ya lo edité, gracias.

Noooo!! mald... regla!
Ya hablé con ella y le dije que tiene una cita para este fin de semana
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #221 (permalink)  
Antiguo 24/01/2011, 11:10
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 6 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Excelente Hidek1, tu turno.

Cita:
Iniciado por abimaelrc Ver Mensaje
Ya hablé con ella y le dije que tiene una cita para este fin de semana
No hermano, no tengo corazón (¡ni ganas!) para despojarte de tu Fiona. :D
  #222 (permalink)  
Antiguo 24/01/2011, 13:57
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Juego: "¿Dónde está el error?"

esta es mi ultima semana antes de salir de vacaciones.. asi que me tienen nadando en trabajos :(..

no se me ocurrio nada en realidad...
pero solo por postear algo y no dejar tirado mi turno..

que debería retornar la linea comentada para que imprimera congrats ?

Código PHP:
<?php
class foo
{
    static private function 
candy()
    {
        return 
'congrats';
    }
    public function 
__invoke($string)
    {
        return 
self::$string();
    }
}
class 
bar
{
    public function 
__invoke(foo $foo null)
    {
        
//return ?;
    
}
}
$bar = new bar;
echo 
$bar(new foo);
vuelvo a mi trabajo ahora ...
  #223 (permalink)  
Antiguo 24/01/2011, 14:14
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 16 años, 6 meses
Puntos: 6
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por Hidek1 Ver Mensaje
esta es mi ultima semana antes de salir de vacaciones.. asi que me tienen nadando en trabajos :(..

no se me ocurrio nada en realidad...
pero solo por postear algo y no dejar tirado mi turno..

que debería retornar la linea comentada para que imprimera congrats ?

Código PHP:
<?php
class foo
{
    static private function 
candy()
    {
        return 
'congrats';
    }
    public function 
__invoke($string)
    {
        return 
self::$string();
    }
}
class 
bar
{
    public function 
__invoke(foo $foo null)
    {
        
//return ?;
    
}
}
$bar = new bar;
echo 
$bar(new foo);
vuelvo a mi trabajo ahora ...
Wao me quedá muy lejos la POO pero espero qué no os riais de mi xd podría ser así?

Código PHP:
Ver original
  1. <?php
  2. class foo
  3. {
  4.     static private function candy()
  5.     {
  6.         return 'congrats';
  7.     }
  8.     public function __invoke($string)
  9.     {
  10.         return self::$string();
  11.     }
  12. }
  13. class bar
  14. {
  15.     public function __invoke(foo $foo = null)
  16.     {
  17.         return __invoke('congrats');
  18.     }
  19. }
  20. $bar = new bar;
  21. echo $bar(new foo);
  22. ?>

No os riaiss xd
  #224 (permalink)  
Antiguo 24/01/2011, 14:18
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Juego: "¿Dónde está el error?"

nop...

en realidad la idea es que imprima el return de la function candy()...
olvide ese detalle.. =)

saludos...

PD: es un error mio .. pero no estoy disponible para citas por el momento ajwauawjaw :P
  #225 (permalink)  
Antiguo 24/01/2011, 15:19
Avatar de WHK
WHK
 
Fecha de Ingreso: enero-2011
Mensajes: 9
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Juego: "¿Dónde está el error?"

if(is_array($x = htmlspecialchars($_GET['x'])))
echo ($x = $x[0])
$x++;

test.php?x[]=1


donde está el error?

-----------------
http://www.webcomparte.com/ - Administrador de WebComparte - Desarrollo WEB
  #226 (permalink)  
Antiguo 24/01/2011, 15:31
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Juego: "¿Dónde está el error?"

aca el resultado
Código PHP:
Ver original
  1. <?php
  2. class foo
  3. {
  4.     static private function candy()
  5.     {
  6.         return 'congrats';
  7.     }
  8.     public function __invoke($string)
  9.     {
  10.         return self::$string();
  11.     }
  12. }
  13. class bar
  14. {
  15.     public function __invoke(foo $foo = null)
  16.     {
  17.         return $foo('candy');      
  18.     }
  19. }
  20. $bar = new bar;
  21. echo $bar(new foo);
  22. ?>
estoy algo corto de tiempo ya que el trabajo y un curso que empece me tienen loco, si alguien tiene algun reto lo puede hacer, bueno esto si me dicen que esta bien
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #227 (permalink)  
Antiguo 24/01/2011, 15:36
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por carlos_belisario Ver Mensaje
aca el resultado
Código PHP:
Ver original
  1. <?php
  2. class foo
  3. {
  4.     static private function candy()
  5.     {
  6.         return 'congrats';
  7.     }
  8.     public function __invoke($string)
  9.     {
  10.         return self::$string();
  11.     }
  12. }
  13. class bar
  14. {
  15.     public function __invoke(foo $foo = null)
  16.     {
  17.         return $foo('candy');      
  18.     }
  19. }
  20. $bar = new bar;
  21. echo $bar(new foo);
  22. ?>
estoy algo corto de tiempo ya que el trabajo y un curso que empece me tienen loco, si alguien tiene algun reto lo puede hacer, bueno esto si me dicen que esta bien

tu turno ?.. yo también estaba ocupado no tienes escusa ajaja :P
  #228 (permalink)  
Antiguo 24/01/2011, 19:26
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Juego: "¿Dónde está el error?"

algo sencillo pero para darle continuidad
Código PHP:
Ver original
  1. echo "<pre>";
  2. var_dump("1e1");
  3. var_dump("10");
  4. var_dump("10" == "1e1");
  5. echo "</pre>";
porque el condicional da verdadero??
Cita:
string(3) "1e1"
string(2) "10"
bool(true)
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #229 (permalink)  
Antiguo 27/01/2011, 10:13
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 16 años, 3 meses
Puntos: 87
Respuesta: Juego: "¿Dónde está el error?"

php convierte automáticamente una cadena a un entero cuando un operador necesita un entero como argumento.

y al evaluar una cadena como número, se omite cualquier caracter excepto el ' . ' y la 'e' o 'E' que la toma como exponente, entonces:

Código PHP:
Ver original
  1. var_dump(intval(1e1)); // =10
  2. var_dump(intval(1e2)); // =100
  3. var_dump(intval(1e3)); // =1000

y por eso sale verdadero.
  #230 (permalink)  
Antiguo 27/01/2011, 14:39
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Juego: "¿Dónde está el error?"

perfecto tu turno
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #231 (permalink)  
Antiguo 27/01/2011, 16:17
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 16 años, 3 meses
Puntos: 87
Respuesta: Juego: "¿Dónde está el error?"

ok, pensaré en algo, de todas formas que cualquiera se sienta libre de lanzar un reto, ya que ando algo cargado de trabajo, y puede que demore un poco.
  #232 (permalink)  
Antiguo 27/01/2011, 19:17
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por Hidek1 Ver Mensaje
tu turno ?.. yo también estaba ocupado no tienes escusa ajaja :P
sito a Hidek1 que me puso a pensar algun reto saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #233 (permalink)  
Antiguo 28/01/2011, 13:15
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 16 años, 3 meses
Puntos: 87
Respuesta: Juego: "¿Dónde está el error?"

no estoy seguro si sea valido, pero bueno.. aquí va:

Código PHP:
Ver original
  1. <?php
  2. $day = strtotime("first Saturday Jan 2011");
  3. echo date("Y-m-d", $day);

resultado:
Cita:
2011-01-08
por qué nos muestra 8 de enero, si el primer sábado fue 1 de enero?
  #234 (permalink)  
Antiguo 28/01/2011, 13:50
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 10 meses
Puntos: 128
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por quike88 Ver Mensaje
no estoy seguro si sea valido, pero bueno.. aquí va:

Código PHP:
Ver original
  1. <?php
  2. $day = strtotime("first Saturday Jan 2011");
  3. echo date("Y-m-d", $day);

resultado:


por qué nos muestra 8 de enero, si el primer sábado fue 1 de enero?

jajajja muy bueno :( todavia no logro dar con este, pero estube revisando diferentes fechas por ejemplo first Tuesday feb 2011 y me trajo 2011-02-08 , esperare la respuesta para salir de la duda




Creo que lo encontré

cuando te refieres a first Saturday Jan 2011 toma el primer sabado de una semana completa que contenga el calendario en el caso que desees imprimir el 1 de enero como es el ejemplo la solucion es la siguiente :

<?php
$day = strtotime("saturday jan 2011");
echo date("Y-m-d", $day);?>


Juaz!!! espero respuesta para saber si estoy bien


Pd: al fin de cuentas lo que quiero decir , es que con first, last, etc... manejas semanas y no dias

Última edición por bUllan9ebrio; 28/01/2011 a las 13:58
  #235 (permalink)  
Antiguo 28/01/2011, 14:34
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 16 años, 3 meses
Puntos: 87
Respuesta: Juego: "¿Dónde está el error?"

siguiendo esa lógica, entonces el primer domingo debería imprimir 9 de enero, pero sin embargo imprime 2 de enero.

Código PHP:
Ver original
  1. <?php
  2. $day = strtotime("first Sunday Jan 2011");
  3. echo date("Y-m-d", $day);
  #236 (permalink)  
Antiguo 28/01/2011, 16:32
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por quike88
siguiendo esa lógica, entonces el primer domingo debería imprimir 9 de enero, pero sin embargo imprime 2 de enero.
Domingo = 0
Lunes = 1
etc...

Domingo es el primer dia de la semana, por lo que "esa logica" a mi me suena muy logica.
__________________
- León, Guanajuato
- GV-Foto
  #237 (permalink)  
Antiguo 21/03/2011, 12:43
 
Fecha de Ingreso: mayo-2008
Mensajes: 117
Antigüedad: 16 años, 6 meses
Puntos: 8
Respuesta: Juego: "¿Dónde está el error?"

Sin tener mucha certeza voy a arriesgarme... es por que un año no tiene exactamente 365 dias, son 365 dias y 6 horas. esto hace que para el, siga siendo 2010 y salta al siguiente sabado. Supongo que cada 4 años, este "desajuste " se soluciona. (bisiesto)
  #238 (permalink)  
Antiguo 21/03/2011, 13:16
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 16 años, 3 meses
Puntos: 87
Respuesta: Juego: "¿Dónde está el error?"

ya me había olvidado de este tema, bueno el error era un bug de la función strtotime() en versiones de PHP anteriores a la 5.2.7.

Cita:
In PHP 5 prior to 5.2.7, requesting a given occurrence of a given weekday in a month where that weekday was the first day of the month would incorrectly add one week to the returned timestamp. This has been corrected in 5.2.7 and later versions.
Seria bueno retomar este tema, a ver si alguien se anima a lanzar un tiro.

Saludos
  #239 (permalink)  
Antiguo 20/04/2011, 21:54
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 6 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Escribir lo mismo en un solo operador ternario:

Código PHP:
Ver original
  1. if(isset($texto)):
  2.     if(!empty($campo_1))
  3.         echo 'hola';
  4.     else
  5.         echo 'nada';
  6. else:
  7.     if(!empty($campo_2))
  8.         mi_funcion('foo=1');
  9.     else
  10.         echo 'nada';
  11. endif;
  #240 (permalink)  
Antiguo 20/04/2011, 22:04
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Código PHP:
Ver original
  1. isset($texto)
  2.     ? (!empty($campo_1)
  3.         ? echo 'hola'
  4.         : echo 'nada')
  5.     : (!empty($campo_2)
  6.         ? mi_function('foo=1')
  7.         : echo 'nada')
Espero no ganarme la vecina
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: a-por-la-vecina-de-meta, juegos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 40 personas




La zona horaria es GMT -6. Ahora son las 13:06.