Foros del Web » Programando para Internet » PHP »

Cannot use string offset as an array ¿Por que?

Estas en el tema de Cannot use string offset as an array ¿Por que? en el foro de PHP en Foros del Web. Buenas tenia un codigo que funcionaba y ahora me salta este error .... se que los del server han tocado algo este finde pero claro ...
  #1 (permalink)  
Antiguo 22/06/2009, 02:29
 
Fecha de Ingreso: enero-2009
Mensajes: 212
Antigüedad: 15 años, 3 meses
Puntos: 4
Cannot use string offset as an array ¿Por que?

Buenas tenia un codigo que funcionaba y ahora me salta este error .... se que los del server han tocado algo este finde pero claro mi codigo ahora no funciona.

El codigo es este :

$pieza = $_SESSION['tablero'][$letra][$numero];


Donde $letra y $numero son variables que he confirmado y existen, en el caso que me falla es :

$_SESSION['tablero']["a"][2]

Que si pongo :

echo $_SESSION['tablero']["a"][2] me muestra el valor "P" pero si lo intento comparar compieza me salta el error este :

"Fatal error: Cannot use string offset as an array in ***** "

¿Que tengo que cambiar? ¿Que paso?.

Gracias anticipadas, un saludo.
__________________
Juega al ajedrez online :http://www.davchess.com
Tecnicas de Ajedrez:http://www.7chess.com
  #2 (permalink)  
Antiguo 22/06/2009, 02:39
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: Cannot use string offset as an array ¿Por que?

Como lo comparas?
  #3 (permalink)  
Antiguo 22/06/2009, 02:46
 
Fecha de Ingreso: enero-2009
Mensajes: 212
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Cannot use string offset as an array ¿Por que?

No comparo quiero meter el valor de $_SESSION['tablero'][$letra][$numero]; a $pieza para despues hacer varias validaciones que tengo , ya que segun ese valor debe hacer uan cosa u otra.
__________________
Juega al ajedrez online :http://www.davchess.com
Tecnicas de Ajedrez:http://www.7chess.com
  #4 (permalink)  
Antiguo 22/06/2009, 02:49
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: Cannot use string offset as an array ¿Por que?

No se, dos preguntas a lo9 mejor estupidas:
estas seguro que $_SESSION['tablero']["a"] es un array y no una string?
cuando comparas estas seguro utilizar == y no =?
  #5 (permalink)  
Antiguo 22/06/2009, 02:55
 
Fecha de Ingreso: enero-2009
Mensajes: 212
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Cannot use string offset as an array ¿Por que?

A ver te respondo :

Mira para cargar de inicio $_SESSION['tablero'] hago esto :

Código PHP:

$this
->celda["a"][1]="T";
        
$this->celda["b"][1]="C";
        
$this->celda["c"][1]="A";
        
$this->celda["d"][1]="Q";
        
$this->celda["e"][1]="R";
        
$this->celda["f"][1]="A";
        
$this->celda["g"][1]="C";
        
$this->celda["h"][1]="T";
        
        
$this->celda["a"][8]="t";
        
$this->celda["b"][8]="c";
        
$this->celda["c"][8]="a";
        
$this->celda["d"][8]="q";
        
$this->celda["e"][8]="r";
        
$this->celda["f"][8]="a";
        
$this->celda["g"][8]="c";
        
$this->celda["h"][8]="t";
        
        
// los peones
        
$this->celda["a"][2]="P";
        
$this->celda["b"][2]="P";
        
$this->celda["c"][2]="P";
        
$this->celda["d"][2]="P";
        
$this->celda["e"][2]="P";
        
$this->celda["f"][2]="P";
        
$this->celda["g"][2]="P";
        
$this->celda["h"][2]="P";
        
        
// los peones
        
$this->celda["a"][7]="p";
        
$this->celda["b"][7]="p";
        
$this->celda["c"][7]="p";
        
$this->celda["d"][7]="p";
        
$this->celda["e"][7]="p";
        
$this->celda["f"][7]="p";
        
$this->celda["g"][7]="p";
        
$this->celda["h"][7]="p"
En la clase y despues igualo la clase en cierto momento con la session y a partir de ahi sigue, ya que son varias fases y para guardarme todos esos valores lo meto en la session.

Despues lo de = o == pues tengo justo esto copiado de la pagina :

Código PHP:
$pieza $_SESSION['tablero'][$letra][$numero]; 

Aqui es meter el valor de la session en pieza asi que uso = no ==

¿Algo mas?, llevo rato probando cosas pero nada no me va no se q hago mal.
__________________
Juega al ajedrez online :http://www.davchess.com
Tecnicas de Ajedrez:http://www.7chess.com
  #6 (permalink)  
Antiguo 22/06/2009, 02:59
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: Cannot use string offset as an array ¿Por que?

la linea donde te da el error es esa, la ultima que escribiste o otra?:
$pieza = $_SESSION['tablero'][$letra][$numero];
  #7 (permalink)  
Antiguo 22/06/2009, 03:10
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Cannot use string offset as an array ¿Por que?

Una breve explicacion del error (en ingles)

Tal vez alguna de las celdas no esta inicializada correctamente; prueba lo siguiente a ver si notas algo raro:
Código php:
Ver original
  1. echo '<pre>';
  2. var_dump($_SESSION['tablero']);
  3. echo '</pre>';
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 22/06/2009, 03:13
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: Cannot use string offset as an array ¿Por que?

Este error te sale cuando intentas definir un elemento de un array a una variable que es una string, o sea como si
$this->celda["a"] o $this->celda["b"] etc...
fueran string y tu intentas definir $this->celda["a"][1], o sea el elemento con llave 1 pero sobre una string.
Mira, aqui:
https://www.zend.com/forums/index.ph...7fa3957b0f87aa
puedes leer algo que te interesa y puedes solucionar tu problema. Chao!
  #9 (permalink)  
Antiguo 22/06/2009, 03:33
 
Fecha de Ingreso: enero-2009
Mensajes: 212
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Cannot use string offset as an array ¿Por que?

Estoy que no entiendo nada ... segun me pones me leo este post :

https://www.zend.com/forums/index.php?t=msg&th=1556

Donde comentan de un bug de php 5 que despues dicen q no que es un "cambio", ok .

Pero lo que "flipo" es esto :

Código PHP:
$arr['b'] = "bar";
$arr['a'][1] = $arr['b'][0];
echo 
$arr['a'][1]; // prints "b" 
A ver si yo me entero, es como si el numero fuera la posicion del string ¿?¿?¿?

En serio no entiendo esto ....


¿El problema es que en algun lado defino la variable como string y no como array? ...
__________________
Juega al ajedrez online :http://www.davchess.com
Tecnicas de Ajedrez:http://www.7chess.com
  #10 (permalink)  
Antiguo 22/06/2009, 03:47
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: Cannot use string offset as an array ¿Por que?

Cita:
A ver si yo me entero, es como si el numero fuera la posicion del string ¿?¿?¿?
Exactamente, puedes acceder a los caracteres de una string como fuera un array
Código PHP:
$test "ejemplo";
echo 
$test[1]; // print j 
No lo se bien, nunca me ocurrio, pero yo creo que en algun lado
una (o mas) de las $_SESSION['tablero'][$letra]
o
una (o mas) de las $this->celda[$letra]
esta definido como string, asì que cuando intentas definir un elemento (o sea anadiendo [$numero]) te echa el error.
Yo intentaria hacer el var_dump de estos para buscar si verdaderamente el problema es ese..
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 13:22.