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. Muy bueno, Cita: Iniciado por Rolldi Mira que eres rebuscado, abimaelrc. ¿Que me habrá querido decir?...

  #31 (permalink)  
Antiguo 23/12/2010, 06:13
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Muy bueno,

Cita:
Iniciado por Rolldi Ver Mensaje
Mira que eres rebuscado, abimaelrc.
¿Que me habrá querido decir?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #32 (permalink)  
Antiguo 23/12/2010, 07:01
(Desactivado)
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 471
Antigüedad: 18 años, 11 meses
Puntos: 45
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por abimaelrc Ver Mensaje
Muy bueno,


¿Que me habrá querido decir?
Jajaja, no seas mal pensado, es con toda la buena intención.

Ahí posteo mi código, es de los sencillitos para que los más novatos sepan resolverlo, solo contiene un error. La finalidad del código es que se muestre el mensaje "ERROR 42"

Código PHP:
Ver original
  1. <?
  2. funcion(2);
  3. function funcion($param3=array(1=>array('33'=>'42',2=>array('3'))),$param){@
  4. $var2 = null;  $param = &$param3; $var=&$param; $var2 .=$var[1]['33'];
  5. if (!(!empty($var)) XOR  !(!isset($var))){ 
  6. echo "ERROR&nbsp;" . $var2 . "";
  7. } else { echo "ERROR&nbsp;". $var[1]['33'] . "" ;}}
  8. ?>
  #33 (permalink)  
Antiguo 23/12/2010, 07:05
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por Rolldi Ver Mensaje
Código PHP:
Ver original
  1. <?
  2. funcion(2);
  3. function funcion($param3=array(1=>array('33'=>'42',2=>array('3'))),$param){@
  4. $var2 = null;  $param = &$param3; $var=&$param; $var2 .=$var[1]['33'];
  5. if (!(!empty($var)) XOR  !(!isset($var))){ 
  6. echo "ERROR&nbsp;" . $var2 . "";
  7. } else { echo "ERROR&nbsp;". $var[1]['33'] . "" ;}}
  8. ?>

ajawjwaua si usaras un codigo asi en mi trabajo te crucificarian =)
revisare "el error" que dices q hay...

el short tag no cuenta como error ?
  #34 (permalink)  
Antiguo 23/12/2010, 07:27
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Juego: "¿Dónde está el error?"

Porque al llamar a la función se está sobreescribiendo el valor por defecto del primer parámetro.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #35 (permalink)  
Antiguo 23/12/2010, 07:32
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Juego: "¿Dónde está el error?"

llamas a la funcion antes de definirla D:
el segundo parámetro no es opcional y no se lo entregas
  #36 (permalink)  
Antiguo 23/12/2010, 07:34
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por Rolldi Ver Mensaje
Ahí posteo mi código, es de los sencillitos para que los más novatos sepan resolverlo, solo contiene un error. La finalidad del código es que se muestre el mensaje "ERROR 42"
Recuerda que una de las reglas consiste en indentar correctamente el código posteado. Si tienes la oportunidad de arreglarlo se agradece.
  #37 (permalink)  
Antiguo 23/12/2010, 07:39
(Desactivado)
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 471
Antigüedad: 18 años, 11 meses
Puntos: 45
Respuesta: Juego: "¿Dónde está el error?"

No lo identé porque entonces superaba las 8 líneas mínimas!
Código PHP:
Ver original
  1. <?
  2. funcion(2);
  3. function funcion($param3=array(1=>array('33'=>'42',2=>array('3'))),$param){
  4. @
  5. $var2 = null;  
  6. $param = &$param3;
  7. $var=&$param;
  8. $var2 .=$var[1]['33'];
  9. if (!(!empty($var)) XOR  !(!isset($var))){  
  10. echo "ERROR&nbsp;" . $var2 . "";
  11. } else {
  12. echo "ERROR&nbsp;". $var[1]['33'] . "" ;
  13. }
  14. }
  15. ?>

David y Hidek1, sed concretos y poned el código corregido. Recordad que la finalidad es que el mensaje se muestre, todo lo demás queda descartado. Solo hay que hacer un cambio porque solo hay un error que impide la finalidad.
  #38 (permalink)  
Antiguo 23/12/2010, 07:44
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Juego: "¿Dónde está el error?"

Yo optaría por esta solución:
Código PHP:
Ver original
  1. <?php
  2. funcion(2);
  3. function funcion($param, $param3 = array(1 => array('33' => '42', 2 => array('3')))){
  4.     @$var2 = null;  
  5.     $param = &$param3;
  6.     $var=&$param;
  7.     $var2 .=$var[1]['33'];
  8.     if (!(!empty($var)) XOR !(!isset($var))){
  9.         echo "ERROR&nbsp;" . $var2 . "";
  10.     } else {
  11.         echo "ERROR&nbsp;". $var[1]['33'] . "" ;
  12.     }
  13. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #39 (permalink)  
Antiguo 23/12/2010, 07:51
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por Rolldi Ver Mensaje
No lo identé porque entonces superaba las 8 líneas mínimas!
Es parte del juego: postear un código que indentado no supere las 8 líneas máximas. Sigamos con el actual y desde ahora observemos mejor esta parte.
  #40 (permalink)  
Antiguo 23/12/2010, 07:58
(Desactivado)
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 471
Antigüedad: 18 años, 11 meses
Puntos: 45
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por David Ver Mensaje
Yo optaría por esta solución:
Código PHP:
Ver original
  1. <?php
  2. funcion(2);
  3. function funcion($param, $param3 = array(1 => array('33' => '42', 2 => array('3')))){
  4.     @$var2 = null;  
  5.     $param = &$param3;
  6.     $var=&$param;
  7.     $var2 .=$var[1]['33'];
  8.     if (!(!empty($var)) XOR !(!isset($var))){
  9.         echo "ERROR&nbsp;" . $var2 . "";
  10.     } else {
  11.         echo "ERROR&nbsp;". $var[1]['33'] . "" ;
  12.     }
  13. }
Exacto! La cuestión era bien sencilla, los parámetros que han de pasarse a la función de forma externa deben estar a la izquierda y las variables definidas a la derecha. Bien sencillito, dije que se lo dejaba a los novatos!!!
  #41 (permalink)  
Antiguo 23/12/2010, 08:00
(Desactivado)
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 471
Antigüedad: 18 años, 11 meses
Puntos: 45
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por metacortex Ver Mensaje
Es parte del juego: postear un código que indentado no supere las 8 líneas máximas. Sigamos con el actual y desde ahora observemos mejor esta parte.
Dije mínimas? Quería decir máximas. Son las 2 de la tarde y esta noche no he dormido. Disculpadme por favor.
  #42 (permalink)  
Antiguo 23/12/2010, 08:06
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Juego: "¿Dónde está el error?"

Código PHP:
Ver original
  1. <?php
  2. $foo = array(2, 3, 4);
  3. if (in_array(array(2, 3), $foo)) {
  4.     echo 'Found';
  5. } else {
  6.     echo 'Not Found';
  7. }
¿Por qué el código imprime 'Not Found'? ¿Qué debería contener $foo para que el resultado fuera 'Found'?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #43 (permalink)  
Antiguo 23/12/2010, 08:20
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Juego: "¿Dónde está el error?"

$foo deberia ser:

Código PHP:
Ver original
  1. $foo=array(array(2, 3),4);
  #44 (permalink)  
Antiguo 23/12/2010, 08:23
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Juego: "¿Dónde está el error?"

Correcto. Tu turno.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #45 (permalink)  
Antiguo 23/12/2010, 08:31
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Juego: "¿Dónde está el error?"

ok, bueno aquí va uno:

Código PHP:
Ver original
  1. <?php
  2. function a($n){
  3.   echo  b($n) * $n ;
  4. }
  5. function b(&$n){
  6.   ++$n;
  7. }
  8. a(10);

debería imprimir 121, pero imprime 0 ¿por qué?. bueno creo que esta muy obvio.
  #46 (permalink)  
Antiguo 23/12/2010, 08:36
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Juego: "¿Dónde está el error?"

usas b() antes de definirlo
  #47 (permalink)  
Antiguo 23/12/2010, 08:36
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Juego: "¿Dónde está el error?"

Porque la función b() no devuelve ningún valor, por lo que la multiplicación se realiza por 0.

La línea 6 debería ser:
Código PHP:
Ver original
  1. return ++$n;
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #48 (permalink)  
Antiguo 23/12/2010, 08:39
(Desactivado)
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 471
Antigüedad: 18 años, 11 meses
Puntos: 45
Respuesta: Juego: "¿Dónde está el error?"

Qué rápidos sois, no me ha dado tiempo ni a escribir.

David, esperamos con ansia tu código!!!
  #49 (permalink)  
Antiguo 23/12/2010, 08:41
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por Rolldi Ver Mensaje
Qué rápidos sois, no me ha dado tiempo ni a escribir.
jejeje.

Bueno @David, estas en lo correcto, tu turno.
  #50 (permalink)  
Antiguo 23/12/2010, 09:29
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Juego: "¿Dónde está el error?"

Este código debería imprimir 10 (edad del usuario), pero imprime 'user':
Código PHP:
Ver original
  1. $hook = array('fetch_info' => "return $data[age];");
  2. echo info(array('name' => 'user', 'age' => 10));
  3. function info($data = array('name' => 'user', 'age' => 0), $plugin = true) {
  4.     if ($plugin) {
  5.         eval($hook['fetch_info']);
  6.     }
  7.     return $data['name'];
  8. }
Tiene 3 errores.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #51 (permalink)  
Antiguo 23/12/2010, 09:53
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Juego: "¿Dónde está el error?"

$hook = array('fetch_info' => "return $data[age];"); <-- esta entre comillas dobles asi que intentare leer $data la cual no existe
eval($hook['fetch_info']); esta dentro de la funcion y no declarada como global asi q no existe


PD: solo diré eso porque no tendría el tiempo para hacer un reto así que le dejo eso a otro usuario xD!
  #52 (permalink)  
Antiguo 23/12/2010, 10:09
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Juego: "¿Dónde está el error?"

y otra que la función siempre va a retornar el valor de $data['name'] no?
  #53 (permalink)  
Antiguo 23/12/2010, 10:12
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Juego: "¿Dónde está el error?"

pues la variable $hook no esta dentro del ambito de la funcion por lo que al llamarla dentro del eval no estaria llamando a nada.
Al usar las comillas dobles para asignar el valor al indice 'fetch_info' toma el valor de la variable $data['age'] que en este caso es nulo, se tendrian que utilizar las comillas simples.
y el tercero que fue el que me costo entender tube que ir al manual es que la funcion eval al tener un return devuelve un resultado por lo que en el llamado a la funcion eval deberia de haber un echo y un condicional para no entrar en el retrun por defecto de la funcion dejo el codigo porque a lo mejor me hice un enredo cuando explique
Código PHP:
Ver original
  1. <?php
  2. $hook = array('fetch_info' => 'return $data[age];');
  3. echo info(array('name' => 'user', 'age' => 10));
  4. function info($data = array('name' => 'user', 'age' => 0), $plugin = true) {
  5.     global $hook;  
  6.     if ($plugin) {                 
  7.         echo eval($hook['fetch_info']);
  8.     }  
  9.     else{
  10.         return $data['name'];  
  11.     }  
  12. }
  13. ?>
PD: si acerte no tengo ningun error sedo mi turno a cualquier persona que tenga uno mientras se me ocurre algo 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
  #54 (permalink)  
Antiguo 23/12/2010, 10:17
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 10
Respuesta: Juego: "¿Dónde está el error?"

no sería al principio:

$data['age']

es decir, con comillas, que en este caso deberían ir comentadas:

'... $data[\'age\'];'

Por lo demás, me parece que el anterior, tiene razón
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #55 (permalink)  
Antiguo 23/12/2010, 10:23
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Juego: "¿Dónde está el error?"

jaja me comi las comillas es que no habia desayunado
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #56 (permalink)  
Antiguo 23/12/2010, 10:24
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Juego: "¿Dónde está el error?"

Es correcto, carlos_belisario.

P.S.: Aunque la solución más apropiada al tercer problema (ya que quisiste corregir con código) debería ser un return eval() y no un echo eval()
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #57 (permalink)  
Antiguo 23/12/2010, 10:29
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Juego: "¿Dónde está el error?"

tienes razon, creo que como no estaba muy familiarizado con la funcion eval() no se me vino a la mente eso, por eso digo que estos juegos siempre nos ayudan a aprender
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #58 (permalink)  
Antiguo 23/12/2010, 11:13
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Juego: "¿Dónde está el error?"

Para darle continuidad voy a hacer una pequeña trivia que pienso que sera muy basica pero no se me ocurria nada y quise darle continuidad aca la pregunta:

Que diferencia existe entre $this->metodo y self::metodo.

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
  #59 (permalink)  
Antiguo 23/12/2010, 12:00
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Juego: "¿Dónde está el error?"

$this->metodo no puede usarse dentro de un método estático; mientras que self::metodo sí. Ya que self hace referencia a la clase, mientras que $this hace referencia al objeto.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #60 (permalink)  
Antiguo 23/12/2010, 12:18
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Juego: "¿Dónde está el error?"

lo dije creo que era algo basica la pregunta, pero quise cambiar un poco y hacer una tipo trivia saludos, creo que te vuelve a tocar el turno amigo David
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way

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 10:04.