Foros del Web » Programando para Internet » PHP »

Matriz tridimensional

Estas en el tema de Matriz tridimensional en el foro de PHP en Foros del Web. hola amigos de foros del web, soy nueva en esto de php y necesito trabajar una matriz tridimensional, que el tamaño es definido por el ...
  #1 (permalink)  
Antiguo 24/07/2006, 14:41
Avatar de ing_aprendiz  
Fecha de Ingreso: septiembre-2005
Mensajes: 136
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta Matriz tridimensional

hola amigos de foros del web, soy nueva en esto de php y necesito trabajar una matriz tridimensional, que el tamaño es definido por el usuario y que además tengo que llenar con unos valores tambien registrados por el usuario como podria hacer esto en php? o en otra tecnología?

chao
  #2 (permalink)  
Antiguo 24/07/2006, 15:29
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 12 años
Puntos: 1
Hola,
Los arrays de php te van a dar la potencia que les pidas, y para el caso que comentas no debieras tener problemas. La declaración de una matriz, en PHP, puede contener ya los elementos de la misma
Código PHP:
$t = array(1"hola""adios"12.42); 
o puede estar vacia y ser 'llenada' a posteriori:
Código PHP:
$t[0] = 1;
$t[1] = 'hola'
Un ejemplo de matriz tridimensional puede ser:
Código PHP:
$arr = array();
$arr[0] = array();
$arr[0][1] = array(1,2);
echo 
"hola: " $arr[0][1][0] . '<br />'
Te recomiendo que leas [1] y [2] para aprender a usar las matrices. Enreda con ellas y verás de lo que son capaces

[1] http://es2.php.net/manual/es/language.types.array.php
[2] http://es2.php.net/manual/es/ref.array.php
__________________
http://www.nosoynadie.net/
  #3 (permalink)  
Antiguo 24/07/2006, 16:07
Avatar de ing_aprendiz  
Fecha de Ingreso: septiembre-2005
Mensajes: 136
Antigüedad: 12 años, 3 meses
Puntos: 0
De acuerdo matriz

hola. gracias por tu ayuda ya habia leido los dos apartes que me dijiste pero en realidad me confunde, pues solamente definen una matriz estatica y necesito una dinámica. de todas maneras gracias por tu informacion
  #4 (permalink)  
Antiguo 27/07/2006, 18:47
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 12 años
Puntos: 1
Hola, siento haber tardado pero he estado liado.

Te he preparado un pequeño código que ilustra el modo de trabajar con las matrices asociativas multidimensionales. Para acercar este ejemplo a tu código debes modificarlo de modo que con Javascript puedas añadir o quitar filas a 'la matriz' que el usuario va a rellenar (que no es más que una tabla de datos) (pregunta a los chicos del foro de Javascript que allí te ayudarán).

El código es el siquiente:
Código PHP:
<?php
if(empty($_POST)){
    
$cols = array('voc_type''importance_raiting''ranking''query_tat');
    
$rows = array('Response_time','Quality_reply','use_of_tool');
    
$Arr = array();
    
srand((double)microtime()*1000000);
    foreach(
$cols as $c=>$v){
        foreach(
$rows as $m=>$n){
            
$Arr[$v][$n] = rand(1,9);
        }
    }
    
reset($cols); reset($rows); reset($Arr);
    
$numCols count($cols); $numRows count($rows);
    echo 
'<form name="frmTabla" method="post" action="'.$_SERVER['PHP_SELF'].'">';
    echo 
'<table cellspacing="1" cellpadding="0" style="margin:auto;width:40%;border:.1em solid #ccc;text-align:center;">';
        echo 
'<tr>';
            echo 
'<td>&nbsp;</td>';
            while(list(
$c$v) = each($cols)){
                echo 
'<td style="background-color:#FF9966;">' .$v'</td>';
            }
        echo 
'</tr>';
        
$cont 0;
        foreach(
$rows as $c=>$v){
            echo 
'<tr>';
                echo 
'<td style="background-color:#66CC99;">'.$rows[$cont].'</td>';
                foreach(
$cols as $m=>$n){
                    echo 
'<td><input type="text" name="'.$n.'-'.$v.'" value="' $Arr[$n][$v] . '" size="1" maxlength="1" /></td>';
                }
            echo 
'</tr>';
            
$cont++;
        }
    echo 
'</table>';
    echo 
'<p style="text-align:center;"><input type="submit" name="btnSave" value="Guardar" /></p>';
    echo 
'</form>';
}
else{
    
array_pop($_POST);
    while(list(
$c$v) = each($_POST)){
        
$tmp explode("-"$c);
        
$Arr[$tmp[0]][$tmp[1]] = $v;
    }
    echo 
'<pre>';
        
print_r($Arr);
    echo 
'</pre>';
}
?>
Copiale integro en un nuevo documento, ejecutalo y mira tanto la pantalla de inicio (la que el usuario controlaría, añadiendo o eliminando filas-columnas, y dando valores) como la pantalla que te llega a tí cuando lo ha enviado (el array asociativo multidimensional con todos los datos, que te permitirá un fácil manejo de los mismos).

Creo que si analizas este código, entiendes cómo se usan los arrays multidimensionales (y un poquito de JavaScript) ya tienes tu aplicación en marcha Suerte!!
__________________
http://www.nosoynadie.net/
  #5 (permalink)  
Antiguo 27/07/2006, 18:56
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 12 años, 5 meses
Puntos: 24
Cita:
Iniciado por ing_aprendiz
hola amigos de foros del web, soy nueva en esto de php y necesito trabajar una matriz tridimensional, que el tamaño es definido por el usuario y que además tengo que llenar con unos valores tambien registrados por el usuario como podria hacer esto en php? o en otra tecnología?

chao
No tiene que ver con la solucion, pero es bueno que lo sepas:

Una matriz siempre tiene 2 dimensiones. El nombre que le corresponde a lo qe estas manejando es arreglo tridimensional o vector tridimensional.

Una matriz, es un vector de 2 dimensiones.
Saludos
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #6 (permalink)  
Antiguo 04/08/2006, 12:17
Avatar de ing_aprendiz  
Fecha de Ingreso: septiembre-2005
Mensajes: 136
Antigüedad: 12 años, 3 meses
Puntos: 0
hola nosoy nadie gracias por tu ayuda me pondre a estudiar el codigo y seguire tu concejo, ya lo ejecuté y de verdad que ese codigo me sirve muchisimo. saludos desde colombia

chao
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:56.