Foros del Web » Programando para Internet » PHP »

Error... Fatal error: Cannot use string offset as an array

Estas en el tema de Error... Fatal error: Cannot use string offset as an array en el foro de PHP en Foros del Web. me sale el siguiente error y no entiendo porque, ya estado revisando o buscando informacion sobre esto pero no lo encuentro ayudenme por favor Fatal ...
  #1 (permalink)  
Antiguo 18/04/2005, 07:21
 
Fecha de Ingreso: diciembre-2004
Mensajes: 85
Antigüedad: 19 años, 3 meses
Puntos: 0
Exclamación Error... Fatal error: Cannot use string offset as an array

me sale el siguiente error y no entiendo porque, ya estado revisando o buscando informacion sobre esto pero no lo encuentro ayudenme por favor

Fatal error: Cannot use string offset as an array in C:\apachefriends\xampp\htdocs\Php\SUPSI\navigator\ parame.php on line 3

Saludos
  #2 (permalink)  
Antiguo 18/04/2005, 08:13
 
Fecha de Ingreso: diciembre-2002
Mensajes: 341
Antigüedad: 21 años, 3 meses
Puntos: 0
Si nos muestras el código del archivo parame.php igual te podemos ayudar mejor... Por lo menos las primeras lineas del script en cuestión...

Un saludo
__________________
guebs - alojamiento web y dominios
www.guebs.com
blog.guebs.com
  #3 (permalink)  
Antiguo 18/04/2005, 08:18
 
Fecha de Ingreso: julio-2003
Ubicación: Colombia
Mensajes: 591
Antigüedad: 20 años, 8 meses
Puntos: 7
es probable que el arreglo este sintacticamente mal escrito, pero de acuerdo con Argintxe, mejor muestras alguito de codgo...


Chaop!
  #4 (permalink)  
Antiguo 18/04/2005, 08:32
 
Fecha de Ingreso: diciembre-2004
Mensajes: 85
Antigüedad: 19 años, 3 meses
Puntos: 0
mi codigo es esto, en pareme.php (el error esta en la linea de color azul,justo alli es la line 3):

<?php

$sitios[0]['nombre']="PC";
$sitios[0]['URL']="http://pcm.cv.bx/Php/index.php";

$sitios[1]['nombre']="Prueba";
$sitios[1]['URL']="http://pcm.cv.bx/Php/navigator/index2.php";

$sitios[2]['nombre']="datos";
$sitios[2]['URL']="http://pcm.cv.bx/naviga/index.php";

if ($sitios[$x]==0 and $sitios['nombre']=="PeC") {
$path = "http://pcm.cv.bx/Php/";
$titulo="mi titulo - Navigator";
}

if ($sitios[$x]==1 and $sitios['nombre']=="prueba") {
$path = "http://pcm.cv.bx/naviga/";
$titulo="Parte 2";
}

?>

Saludos
  #5 (permalink)  
Antiguo 18/04/2005, 08:35
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 18 años, 11 meses
Puntos: 0
Seguro que en vez de los paréntesis rectos está usando las llaves.

Por ejemplo:
Código PHP:
$lindo_array{5}; // INCORRECTO

$lindo_array[5]; // CORRECTO 
Saludos!

PD: A ver si se ponen las pilas cuando preguntan y ponen el código y los mensajes de error, pronto vamos a tener que comprar una bola de cristal
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #6 (permalink)  
Antiguo 18/04/2005, 08:51
 
Fecha de Ingreso: diciembre-2002
Mensajes: 341
Antigüedad: 21 años, 3 meses
Puntos: 0
Tu script no me da ningun error, aunque recuerdo haber programado un script con un array similar al tuyo que me daba errores, al final lo resolvi... no se como lo resolvi.

Pero prueba a poner esto al inicio del script:

<?php
$sitios = array();
?>

Diria que es un BUG de PHP, ¿que versión tienes? Creo que hubo una versión de PHP al que no le gustaban los array multidimensionales que mezclaban indices números y strings.

No se...

Un saludo!
__________________
guebs - alojamiento web y dominios
www.guebs.com
blog.guebs.com
  #7 (permalink)  
Antiguo 18/04/2005, 09:17
 
Fecha de Ingreso: diciembre-2004
Mensajes: 85
Antigüedad: 19 años, 3 meses
Puntos: 0
Funciona ponienle el array, pero pregunto esta bien lo que estoy haciendo despues de mis arrays, lo que queiro es pasar esos parametros en mi index.php, cada vez que seleccione un de ellos.

<?php

$sitios = array();
<?php

$sitios[0]['nombre']="PC";
$sitios[0]['URL']="http://pcm.cv.bx/Php/index.php";

$sitios[1]['nombre']="Prueba";
$sitios[1]['URL']="http://pcm.cv.bx/Php/navigator/index2.php";

$sitios[2]['nombre']="datos";
$sitios[2]['URL']="http://pcm.cv.bx/naviga/index.php";

if ($sitios[$x]==0 and $sitios['nombre']=="PeC") {
$path = "http://pcm.cv.bx/Php/";
$titulo="mi titulo - Navigator";
}

if ($sitios[$x]==1 and $sitios['nombre']=="prueba") {
$path = "http://pcm.cv.bx/naviga/";
$titulo="Parte 2";

if ($sitios[$x]==0 and $sitios['nombre']=="PeC") {
$path = "http://pcm3080.dti.supsi.ch/Php/SUPSI/navigator/";
$titulo="Resource Navigator - PeC Navigator";
$part1= "Dato1";
$part2= "dato3 de mi aplicacion";

}

if ($sitios[$x]==1 and $sitios['nombre']=="SourcePet") {
$path = "http://pcm3080.dti.supsi.ch/Php/SUPSI/navigator/";
$titulo="Navigator";
$part1= "Esto es mi segundo ejemplo";
$part2= "Haber que sucede";
}

if ($sitios[$x]==2 and $sitios['nombre']=="SourceCompPA") {
$path = "http://pcm3080.dti.supsi.ch/Php/SUPSI/navigator/";
$titulo="Ingresara";
$part1= "Dato variado";
$part2= "Aplicacion";
}

?>

Ya que ingresa y no me muestra nada
Saludos
  #8 (permalink)  
Antiguo 18/04/2005, 09:28
 
Fecha de Ingreso: julio-2003
Ubicación: Colombia
Mensajes: 591
Antigüedad: 20 años, 8 meses
Puntos: 7
para crear un arreglo bidimensional de tipo indexado-asociativo, el primero debe ser un arreglo...por eso deberia funcionar "forzando" con la funcion array...

Código PHP:
$sitios[0]['nombre']=array('PC'); 
Chaop!

PD: Me corrijen si estoy mal
  #9 (permalink)  
Antiguo 18/04/2005, 09:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
elmaster
PD: A ver si se ponen las pilas cuando preguntan y ponen el código y los mensajes de error, pronto vamos a tener que comprar una bola de cristal
Yo ya compré una .. si quieres te paso el dato de donde la adquirí xDDD

Cita:
Código PHP:
<?php

$sitios
[0]['nombre']="PC"
$sitios[0]['URL']="http://pcm.cv.bx/Php/index.php";

$sitios[1]['nombre']="Prueba"
$sitios[1]['URL']="http://pcm.cv.bx/Php/navigator/index2.php"

$sitios[2]['nombre']="datos"
$sitios[2]['URL']="http://pcm.cv.bx/naviga/index.php"

if (
$sitios[$x]==and $sitios['nombre']=="PeC") {
$path "http://pcm.cv.bx/Php/";
$titulo="mi titulo - Navigator";
}

if (
$sitios[$x]==and $sitios['nombre']=="prueba") {
$path "http://pcm.cv.bx/naviga/";
$titulo="Parte 2";
}

?>
Realmente no sé por qué haces tanto lío ... Deberías explicar en función de -que- variables externas ($nombre?) debes generar ese $path y $titulo .. por qué armar ese montón de "if" .. usando ya arrays no tiene sentido ...

redirecciona.php
Código PHP:
<?php

$sitios
[0]['nombre']="PC"
$sitios[0]['path']="http://pcm.cv.bx/Php/index.php";
$sitios[0]['titulo']="blablabl 0";

$sitios[1]['nombre']="Prueba"
$sitios[1]['path']="http://pcm.cv.bx/Php/navigator/index2.php"
$sitios[1]['titulo']="blablabla 1";

$sitios[2]['nombre']="datos"
$sitios[2]['path']="http://pcm.cv.bx/naviga/index.php"
$sitios[2]['titulo']="Blablabla 2";

$x=0;
foreach (
$sitios as $sitio){

  if (
$sitio['nombre']==$_GET['nombre']){
     
$path=$sitios[$x]['path']; 
     
$titulo=$sitios[$x]['titulo'];
     break;
  }
  
$x++;
}

// y a partir de aquí tendras tu $path y tu $titulo para que lo uses donde gustes ..

?>
USO:
Links tipo:

<a href="redirecciona.php?nombre=PC">PC</a>

No sé si será eso lo que buscas .. pero por ahí va el tema .. Debes recorrer tu array para buscar el "indice" que requieras .. Seguro que en PHP hay alguna función mejor para tal fin .. pero esa es la base.

Un saludo,
  #10 (permalink)  
Antiguo 18/04/2005, 09:39
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Inicializar $sitios como array() está bien.
Lo que no veo muy bien es esto:
Código PHP:
if ($sitios[$x]==and $sitios['nombre']=="prueba"
Lo que pasa es :
- que $sitios[$x] no es un número sino un array (que tiene los índices 'nombre' y 'URL'). Y tú lo intentas leer como si fuera un entero.... error!
- que 'nombre' no es un índice válido de $sitios. Tú pretendes leer $sitios['nombre'] cuando lo que tienes que hacer es leer $sitios[$x]['nombre'].

Esto supongo que debería quedar así:
Código PHP:
if ($x==and $sitios[$x]['nombre']=="Prueba"
Saludos
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 07:56.