PHP - A vueltas con array multidimensional (matriz)

 
Vista:
sin imagen de perfil
Val: 35
Ha disminuido su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

A vueltas con array multidimensional (matriz)

Publicado por Ruben (19 intervenciones) el 13/05/2019 21:19:51
Buenas

Utilizo el siguiente codigo para intentar hacer una archivo de registros..


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
$NewUsuario   = $_GET['Usr'];  //Paso parametro en llamada 
$Dir   = $_GET['Dr'];  //Paso parametro en llamada 
$Suld  = $_GET['Sl'];  //Paso parametro en llamada 
 
$Usuarios = array
		(
		 array
		 (
                              "Usuario"  =>" ";
                              "Direccion" =>" ";
                              "Sueldo"  =>" ";
                    )
              );
 
 
 
//Leer Archivo texto que contiene registros (cada tres lineas un registro ), Linea a Linea y Asigno Datos
$archivo = fopen($NomArchivo,'r');
$numlinea = 1;
$Cont     = 0;
$Esta = false;
while ($linea = fgets($archivo))
 {
	if($numlinea<4)
	{
		if($numlinea==1)
		{
			  Usuarios[Cont]["Usuario"]=$linea;
                          //Si el nuevo usuario ya se encuentra en el registo(Archivo texto)
 		          if(strstr(strtoupper($linea),strtoupper($NewUsuario)))
			   {
			     $Esta = true;
			    }
		}
     		if($numlinea==2){Usuarios[Cont]["Direccion"]=$linea;}
       	 if($numlinea==3){ Usuarios[Cont]["Sueldo"]=$linea;}
       }
       else
 	{
		$numlinea = 0;
		$Cont ++;
	}
	$numlinea ++;
  }
 
fclose($archivo);
 
//Si el Usuario es nuevo Lo añado
if(!$Esta)
{
	Cont ++;
	$Usuarios[Cont]["Usuario"] = $NewUsuario;
	$Usuarios[Cont]["Direccion"]= $Dir;
	$Usuarios[Cont]["Sueldo"] = $Suld;
}
 
.,,,,,
.,,,,,,,,,,
.,,,,,,,,,,,,,,
 
$n=count($Usuarios);
 
/Guardo Archivo
$fp = fopen($NomArchivo);
for ($i = 0; $i < $n ; $i++)
{
  fwrite($fp, $Usuarios[$i]["Usuario"].  PHP_EOL);
  fwrite($fp, $Usuarios[$i]["Direccion"]. PHP_EOL);
  fwrite($fp, $Usuarios[$i]["Sueldo"].  PHP_EOL);
}
fclose($fp);

Al final no me graba nada en el Archivo.. ¿Que hago mal?

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 1.880
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

A vueltas con array multidimensional (matriz)

Publicado por joel (517 intervenciones) el 14/05/2019 07:43:55
Hola Ruben... estoy mirando tu código y veo cosas extrañas... como la linea 57, 58 y 59 que son esos puntos y comas?
En la linea 63, si es un comentario falta una barra... tendría que ser: // comentario

Revisa que no haya ningun error, a lo mejor por eso no te guarda los datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 35
Ha disminuido su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

A vueltas con array multidimensional (matriz)

Publicado por Ruben (19 intervenciones) el 14/05/2019 08:52:57
Muchisimas gracias por contestar.

Efectivamente el codigo que mando contiene errores, no hacer un copia y pega, y hacer la transcripcion "a mano" tiene estas cosas, algunas de ellas las detecte cuando lo habia enviado , pero no se como editar la publicacion.
Las lineas 57, 58, 59 las muestro así para indicar que hay mas codigo. Efectivamente la linea 63 es un comentario que en el script esta bien codificado..
Existe otro error de transcripcion (quiza mas grave) que en el script no existe, la linea 64 seria

1
$fp = fopen($NomArchivo,'w');

Con el codigo original sin estos errores. no me guarda en el archivo los usuarios... Alguna idea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 35
Ha disminuido su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

A vueltas con array multidimensional (matriz)

Publicado por Ruben (19 intervenciones) el 14/05/2019 10:47:06
El correcto seria:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
$NewUsuario   = $_GET['Usr']; //Paso parametro en llamada 
  $Dir          = $_GET['Dr'];  //Paso parametro en llamada 
  $Suld         = $_GET['Sl'];  //Paso parametro en llamada 
 
  $Usuarios = array
        (
         array
         (
                 "Usuario"  =>" ";
                 "Direccion" =>" ";
                 "Sueldo"  =>" ";
         )
        );
 
//Leer Archivo texto que contiene registros (cada tres lineas un registro ), 
//Linea a Linea y Asigno Datos
   $archivo = fopen($NomArchivo,'r');
   $numlinea = 1;
   $Esta = false;
   while ($linea = fgets($archivo))
    {
    if($numlinea<4)
    {
        if($numlinea==1)
        {
         Usuarios[Cont]["Usuario"]=$linea;
         //Si el nuevo usuario ya se encuentra en el registo (Archivo texto)
         if(strstr(strtoupper($linea),strtoupper($NewUsuario)))
                {
                 $Esta = true;
                }
        }
 
        if($numlinea==2){Usuarios[Cont]["Direccion"]=$linea;}
        if($numlinea==3){Usuarios[Cont]["Sueldo"]=$linea;}
    }
    else
    {
        $numlinea = 0;
        $Cont ++;
    }
    $numlinea ++;
    }
 
  fclose($archivo);
 
  //Si el Usuario es nuevo Lo añado
  if(!$Esta)
  {
    $Usuarios[Cont]["Usuario"] = $NewUsuario;
    $Usuarios[Cont]["Direccion"]= $Dir;
    $Usuarios[Cont]["Sueldo"] = $Suld;
  }
 
  $n=count($Usuarios);
 
  //Guardo Archivo
  $fp = fopen($NomArchivo,'w');
  for ($i = 0; $i < $n ; $i++)
  {
    fwrite($fp, $Usuarios[$i]["Usuario"].  PHP_EOL);
    fwrite($fp, $Usuarios[$i]["Direccion"]. PHP_EOL);
    fwrite($fp, $Usuarios[$i]["Sueldo"].  PHP_EOL);
  }
  fclose($fp);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 1.668
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

A vueltas con array multidimensional (matriz)

Publicado por Mauro (467 intervenciones) el 14/05/2019 15:35:12
Te hago un par de sugerencias:

1 - No uses la notación extendida de arrays (Salvo que estés con PHP < 5.4, siempre es preferible usar la notación abreviada []).
2 - No veo en ningún punto de tu código salidas por pantalla, logs ni nada parecido... ¿cómo sabes qué partes se ejecutaron efectivamente?

Sobre el punto 2, puedes poner algún echo, var_dump o, si tienes un IDE a mano, usar un debugger.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar