Foros del Web » Programando para Internet » PHP »

Notice: Use of undefined constant ComparaPuntos - assumed 'ComparaPuntos' in C:\

Estas en el tema de Notice: Use of undefined constant ComparaPuntos - assumed 'ComparaPuntos' in C:\ en el foro de PHP en Foros del Web. Hola a todos He conseguido mostrar un array bidimensional ordenado por un campo en concreto, pero por algún motivo me aparece el Notice que he ...
  #1 (permalink)  
Antiguo 23/04/2012, 10:15
 
Fecha de Ingreso: marzo-2012
Mensajes: 27
Antigüedad: 12 años, 8 meses
Puntos: 0
Notice: Use of undefined constant ComparaPuntos - assumed 'ComparaPuntos' in C:\

Hola a todos

He conseguido mostrar un array bidimensional ordenado por un campo en concreto, pero por algún motivo me aparece el Notice que he puesto en el titulo, y no se exactamente a que se debe, ya que funcionar me funciona.
¿Como puedo arreglar eso?, he buscado info pero no he sacado nada en claro.
Copio la función que esta en mi archivo funciones.php
Código PHP:
function ComparaPuntos($x,$y
{  
    if(
$x[1]==$y[1])
    return 
0;
    else if(
$x[1]<$y[1])
    return 
1;
    else
    return -
1;

Y en este otro como lo llamo, que es en la linea donde me da el error.
pagina.php
Código PHP:
usort($equipo_datos,ComparaPuntos); 
El resto de codigo creo que es innecesario ya que funciona y el for me muestra el array correctamente y ordenado por el campo que le indico en la función.
La linea del error es esta ultima que he puesto el usort.

Gracias.
  #2 (permalink)  
Antiguo 23/04/2012, 10:18
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 15 años, 3 meses
Puntos: 66
Respuesta: Notice: Use of undefined constant ComparaPuntos - assumed 'ComparaPuntos'

ComparaPuntos es una función, la has de llamar como tal ComparaPuntos(); si no php entiende que se trata de una constante no definida,

saludos,
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 23/04/2012, 10:27
 
Fecha de Ingreso: marzo-2012
Mensajes: 27
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Notice: Use of undefined constant ComparaPuntos - assumed 'ComparaPuntos'

Gracias Santris, pero eso ya lo pense, de echo lo puse así desde un principio, pero entonces es peor xq las lines de error se multiplican.
El notice no me sale, pero me reclama argumentos que no he de pasar.
Pongo puntos suspensivos en la ruta para que no sea tan extenso.

Warning: Missing argument 1 for ComparaPuntos(), called in ... pagina.php on line 117 and defined in ... funciones.php on line 403

Warning: Missing argument 2 for ComparaPuntos(), called in ....

Notice: Undefined variable: x in ....funciones.php on line 405

Notice: Undefined variable: y in .... funciones.php on line 405

Warning: usort() expects parameter 2 to be a valid callback, no array or string given in ..... pagina.php on line 117

Gracias.
  #4 (permalink)  
Antiguo 23/04/2012, 10:35
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 15 años, 3 meses
Puntos: 66
Respuesta: Notice: Use of undefined constant ComparaPuntos - assumed 'ComparaPuntos'

Cita:
Iniciado por xaviutx Ver Mensaje
Gracias Santris, pero eso ya lo pense, de echo lo puse así desde un principio, pero entonces es peor xq las lines de error se multiplican.
El notice no me sale, pero me reclama argumentos que no he de pasar.
Pongo puntos suspensivos en la ruta para que no sea tan extenso.
No se trata de hacerlo de una u otra forma, se trata de llamar a la función correctamente.

Ahora puedes descifrar los errores que te reporta sabiendo que la llamada a la función es correcta.

Los errores basicamente te dicen que no tienes definidas algunas variables y que faltan pasar argumentos a la función, por ej: ComparaPuntos(5, 6);
__________________
Tu álbum de cromos online!!
  #5 (permalink)  
Antiguo 23/04/2012, 10:42
 
Fecha de Ingreso: marzo-2012
Mensajes: 27
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Notice: Use of undefined constant ComparaPuntos - assumed 'ComparaPuntos'

El Notice me daba la respuesta.

No se porque, pero el nombre de la función que se utiliza dentro de una función como usort hay que ponerlo así:

Código PHP:
usort($equipo_datos,'ComparaPuntos'); 
Si entre comillas y sin ( ).

Yo el ejemplo del que copie la función que se puede ver más arriba, funcionaba sin errores en el video donde la vi, y la unica diferencia ademas de una versión PHP más nueva es que utilizo por defecto el Register_globals=OFF , me gusta declarar las variables y es más seguro.

Seguramente tenga algo que ver con esto, y por eso se pasa la función dentro de otra entre comillas simples.
Ahora, si alguien sabe exactamente si es por eso que confirme mi teoria.

Gracias.
  #6 (permalink)  
Antiguo 23/04/2012, 10:46
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años, 7 meses
Puntos: 97
Respuesta: Notice: Use of undefined constant ComparaPuntos - assumed 'ComparaPuntos'

usort($equipo_datos,ComparaPuntos($x,$y));

es eso?
  #7 (permalink)  
Antiguo 23/04/2012, 10:48
 
Fecha de Ingreso: marzo-2012
Mensajes: 27
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Notice: Use of undefined constant ComparaPuntos - assumed 'ComparaPuntos'

Ya lo se Santris, pero como puedes ver en mi anterior mensaje no es exactamente ese el problema.

Como yo a la función ya le he dicho por adelantado el campo por el que debe ordenar, no le he de pasar nada por parametro, y la forma de llamarla dentro de usort sin parametros es con las comillas simples.

Otra cosa es que yo enviara la cordenada del array del valor por el que quiero que se ordene, en este caso la función es especifica para ese array.

Gracia por tus respuestas.
  #8 (permalink)  
Antiguo 23/04/2012, 10:51
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años, 7 meses
Puntos: 97
Respuesta: Notice: Use of undefined constant ComparaPuntos - assumed 'ComparaPuntos'

...evidentemente donde $x y $y son las valores a pasar, como te propone Santris.
  #9 (permalink)  
Antiguo 23/04/2012, 10:54
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 15 años, 3 meses
Puntos: 66
Respuesta: Notice: Use of undefined constant ComparaPuntos - assumed 'ComparaPuntos'

Cita:
Iniciado por xaviutx Ver Mensaje
El Notice me daba la respuesta.

No se porque, pero el nombre de la función que se utiliza dentro de una función como usort hay que ponerlo así:

Código PHP:
usort($equipo_datos,'ComparaPuntos'); 
Si entre comillas y sin ( ).

Yo el ejemplo del que copie la función que se puede ver más arriba, funcionaba sin errores en el video donde la vi, y la unica diferencia ademas de una versión PHP más nueva es que utilizo por defecto el Register_globals=OFF , me gusta declarar las variables y es más seguro.

Seguramente tenga algo que ver con esto, y por eso se pasa la función dentro de otra entre comillas simples.
Ahora, si alguien sabe exactamente si es por eso que confirme mi teoria.

Gracias.
Mil perdones!! parece que tienes razón y la función usort() recoje el nombre de la función (entre comillas) definida por el usuario.

Mira el manual para ver como trabaja la función usort()
__________________
Tu álbum de cromos online!!
  #10 (permalink)  
Antiguo 23/04/2012, 11:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Notice: Use of undefined constant ComparaPuntos - assumed 'ComparaPuntos'

@xaviutx: Lee lo siguiente: http://www.php.net/manual/es/languag...s.callable.php

Saludos.
  #11 (permalink)  
Antiguo 24/04/2012, 19:00
 
Fecha de Ingreso: marzo-2012
Mensajes: 27
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Notice: Use of undefined constant ComparaPuntos - assumed 'ComparaPuntos'

Gracias GatorV

Etiquetas: constant, notice, undefined
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




La zona horaria es GMT -6. Ahora son las 08:28.