Foros del Web » Programando para Internet » PHP »

problemas al crear un array

Estas en el tema de problemas al crear un array en el foro de PHP en Foros del Web. Hola amigos!!!! Tengo el sigueinte codigo : Código: for ($i=0;$i<count($menu_old);$i++){ WriteLog("Modulo : ".$menu_old[$i]); $idmodule = getIdModule($menu_old[$i], $db); WriteLog("ID Modulo : ".$idmodule); $menu[$i][0]=$idmodule; $menu[$i][1]=$menu_old[$i]; WriteLog("ID Modulo[$i][0] ...
  #1 (permalink)  
Antiguo 11/08/2008, 07:54
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
problemas al crear un array

Hola amigos!!!!
Tengo el sigueinte codigo :
Código:
	for ($i=0;$i<count($menu_old);$i++){
		WriteLog("Modulo : ".$menu_old[$i]);
		$idmodule = getIdModule($menu_old[$i], $db);
		WriteLog("ID Modulo : ".$idmodule);
		$menu[$i][0]=$idmodule;
		$menu[$i][1]=$menu_old[$i];
		WriteLog("ID Modulo[$i][0] : ".$menu[$i][0]." - Modulo [$i][2] : ".$menu[$i][2]);
	}
la función getIdModule me devuelve el Id del modulo.
Entonces lo que yo quiero es crear un array, donde en la posicion 0 será el ID y en la 1 en nombre del modulo que está en la variable $menu_old[$i];, quedándome asi:
$menu[0][0]=1;
$menu[0][1]=HOME;
$menu[1][0]=14;
$menu[2][1]=SETTINGS;
etc...

pero el problema lo tengo en esta linea:
Código:
$menu[$i][1]=$menu_old[$i];
que lo que me hace es grabar de $menu_old[$i] la primera letra en $menu[$i][1], en $menu[$i][2] la segunda letra, en $menu[$i][3] la tercera letra, etc...

cuando lo que quiero es que me grabe la palabar entera, ¿sabeis porque me sucede esto?

Gracias!!! por adelantado!


PD:WriteLog es una funcion hecha por mi que me genera un archivo con la fecha y hora y le parametro que yo le pase.
  #2 (permalink)  
Antiguo 11/08/2008, 08:13
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años
Puntos: 13
Respuesta: problemas al crear un array

Si sucede tal como dices, entonces el error es que la variable $menu_old no es un array, y al decirle [$i] te pilla la posición del contenido en vez de la posición del array.

Se supone que se arreglaría así:

Código PHP:
$menu[$i][1]=$menu_old
Si no, verifica que $menu_old recoje bien su contenido, porque me da a mí que no lo has metido bien en array.

Si eso, pon las líneas donde llenas el contenido de $menu_old.

Saludos
  #3 (permalink)  
Antiguo 11/08/2008, 08:17
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: problemas al crear un array

¿Estás seguro que $menu_old está siendo considerado como arreglo y no cadena?, porque al guardar caracter por caracter se está interpretando a $menu_old como una cadena, entonces al poner $menu_old[$i] vas recorriendo a esta como un arreglo de caracteres y por eso te va guardando las letras una por una en vez de la palabra completa.

Saludos,
goc00
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #4 (permalink)  
Antiguo 11/08/2008, 10:02
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: problemas al crear un array

encontré el fallo.
Resulta que anteriormente en otra de mis funciones, tenia una variable $menu, y claro en las posciones que se grababa algo cuando ponia $menu[$i][1] por eso solo me ponia un caracter. lo solucioné de este modo:

Código:
	$access_module="ACCESS_MODULE_";
	$access_module_section="_SECTION_";
	
	for ($i=0;$i<count($permissions);$i++){
		WriteLog ("Permiso [$i][0] : ".$permissions[$i][0]);
		$trozos = explode($access_module, $permissions[$i][0]);
		WriteLog ("trozos : ".$trozos);
		for ($j=0;$j<count($trozos);$j++){
			WriteLog ("trozos[$j] : ".$trozos[$j]);
		}
		if (ereg($access_module_section, $trozos[1])){
			WriteLog("Tiene secciones");
			$idsection=getIdSection(,$db);
		}
		else{
			$menu[$i]=$trozos[1];
		}
		WriteLog ("Menu [$i]: ".$menu[$i]);
	}
	$menu_old=$menu;
	//Montamos un array con el id del modulo y con el nombre del modulo
	for ($i=0;$i<count($menu_old);$i++){
		WriteLog ("#######################################");
		WriteLog("Modulo : ".$menu_old[$i]);
		$idmodule = getIdModule($menu_old[$i], $db);
		WriteLog("ID Modulo : ".$idmodule);
		
		$filamenu[0]=$idmodule;
		$filamenu[1]=$menu_old[$i];
		
		$menu_json[]=$filamenu;
		
		WriteLog("ID Modulo[$i][0] : ".$menu_json[$i][0]." - Modulo [$i][1] : ".$menu_json[$i][1]);
	}
lo que hice, fué cambiar el nombre de la segunda variable $menu por $menu_json

Gracias por vustras inmediatas respuesta!!! Es todo un lujo!!!

Hasta pronto!!!!
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 02:38.