Foros del Web » Programando para Internet » PHP »

Porque este codigo me da error?

Estas en el tema de Porque este codigo me da error? en el foro de PHP en Foros del Web. Hola a todos, estoy haciendo unas pruebas pero este codigo me da error, porquE? el error que me da es esta Fatal error: Cannot access ...
  #1 (permalink)  
Antiguo 10/01/2011, 16:40
 
Fecha de Ingreso: enero-2011
Mensajes: 49
Antigüedad: 13 años, 3 meses
Puntos: 0
Pregunta Porque este codigo me da error?

Hola a todos, estoy haciendo unas pruebas pero este codigo me da error, porquE?

el error que me da es esta Fatal error: Cannot access empty property in D:\xampp\htdocs\prueba\index.php on line 12

Gracias de antemano

Saludos

Código:
<?php
$a = new prueba();
$a->inicia();
$a->recorrer();

class prueba
{
	static $numIndex;
	function inicia()
	{
		$this->$numIndex = 0;
	}
	function recorrer()
	{
		while ($this->$numIndex < 10)
		{
			if (($this->$numIndex%2)==0)
			{
				echo $this->$numIndex, 'No', '<br>';
				$this->recorrer();
			}
			else
				echo $this->$numIndex, 'Si', '<br>';
		}
	}
}
?>
  #2 (permalink)  
Antiguo 10/01/2011, 17:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Porque este codigo me da error?

Si tu variable es estatica, la tienes que leer usando self::$numIndex.

Saludos.
  #3 (permalink)  
Antiguo 10/01/2011, 17:23
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Porque este codigo me da error?

Aparte de lo que te mencionaron antes, me parece que tu código va a entrar en bucle infinito...

Revisalo antes de ejecutar...

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #4 (permalink)  
Antiguo 10/01/2011, 17:27
 
Fecha de Ingreso: enero-2011
Mensajes: 49
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Porque este codigo me da error?

Gracias GatorV

pero ya encontre el error

incorrecto
$this->$numIndex = 0;

correcto
$this->numIndex = 0;


Saludos
  #5 (permalink)  
Antiguo 10/01/2011, 17:30
 
Fecha de Ingreso: enero-2011
Mensajes: 49
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Porque este codigo me da error?

Cita:
Iniciado por portalmana Ver Mensaje
Aparte de lo que te mencionaron antes, me parece que tu código va a entrar en bucle infinito...

Revisalo antes de ejecutar...

Saludos

Si ya lo corregi ahora tengo otro problema

Código:
<?php
$a = new prueba();
$a->inicia();
$a->recorrer();

class prueba
{
	static $numIndex;
	function inicia()
	{
		$this->numIndex = 0;
	}
	function recorrer()
	{
		while ($this->numIndex < 10)
		{
			echo $this->numIndex, '<br>';
			$this->numIndex = $this->numIndex + 1;
			echo $this->numIndex, '<br>';
			if (($this->numIndex%2)==0)
			{
				$this->recorrer();
			}
			
		}
	}
}
?>
echo $this->numIndex, '<br>';
me imprime 1

$this->numIndex = $this->numIndex + 1;

echo $this->numIndex, '<br>';
luego me vuelve a imprimir 1 se su pone que numIndex + 1 me debe incrementar pero recien lo hacer al siguiente


Porque sale asi?

Saludos
  #6 (permalink)  
Antiguo 10/01/2011, 17:40
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Porque este codigo me da error?

Primero lo que te dice Gator V esta en lo correcto, si bien te funciona como lo solucionaste no es correcto usar variables estáticas con el operador de instancia this. Los atributos estáticos se usan con self.

Si utilizas errores en modo estricto te marcaría un error..

Lo otro fíjate en el codigo que imprimes la variable y luego le sumas 1 y vuelves a imprimir es logico que imprima 0 luego suma 1
imprime 1
se llama a si mismo y se imprime 1
suma 1
imprime 2 y asi...

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp

Etiquetas: Ninguno
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 15:11.