Foros del Web » Programando para Internet » PHP »

saber si se trata de un array bidimensional

Estas en el tema de saber si se trata de un array bidimensional en el foro de PHP en Foros del Web. Hola... Queria saber si es posible si es posible averiguar si una variable dada es un array bidimensional. Comprobar que es un array es facil, ...
  #1 (permalink)  
Antiguo 20/10/2003, 10:51
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 21 años, 10 meses
Puntos: 0
saber si se trata de un array bidimensional

Hola...
Queria saber si es posible si es posible averiguar si una variable dada es un array bidimensional. Comprobar que es un array es facil, pero como se sabe si es unicamente bidimensional, o sea, que cada "campo" de las filas no sea otro array?
  #2 (permalink)  
Antiguo 20/10/2003, 14:09
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Debido a la naturaleza de los arrays en PHP (son mas bien mapas, creo que se llamban en otros lenguajes), no puedes establecer nada global del array sin recorrer todo el array. En PHP un array valido es:
Código PHP:
$array[0]=array(1,3,5,7);
$array[1]='PHP';
$array[2]=array(2,4,6,8,10);
$array[3]=33
Con lo que para saber si es bidimensional o no, deberias hacer una funcion que recorra todos los elementos del array. Para cada elemento, si no es array, devolver false (no es bidimensional), y si es array recorrer cada elemento de ese elemento. Si alguno de esos elementos es un array, devolver false. Si una vez llegado al fina, no se ha devuelto false, se devuelve true (si es solo bidimensional). Asi de cabeza podria ser:
Código PHP:
/* bool es_bidimensional($array)
     
    devuelve true si $array es solo bidimensional, false en caso contrario.
*/

function es_bidimensional($array) {
  if (!
is_array($array)) return false;  // paranoia si no nos pasan un array

  
foreach ($array as $elemento) {
    if (!
is_array($elemento)) return false
    foreach (
$elemento as $elem) {
      if (
is_array($elem)) return false;
    }
  }
  
  return 
true;
}

// ejemplos
$array=array();
$array[0]=array(1,3,5,7);
$array[1]='PHP';
$array[2]=array(2,4,6,8,10);
$array[3]=array(array(1,2,3));

echo (
es_bidimensional($array))?'verdad':'falso';
echo 
'<br>';

$array=array();
$array[0]=array(1,3,5,7);
$array[1]=array(2,4,6,8,10);
$array[2]=array(array(1,2,3));

echo (
es_bidimensional($array))?'verdad':'falso';
echo 
'<br>';

$array=array();
$array[0]=array(1,3,5,7);
$array[1]=array(2,4,6,8,10);

echo (
es_bidimensional($array))?'verdad':'falso';
echo 
'<br>'
Claro, tomando como solo bidimensional que pueda tener elementos como el 0 y el 2 del ejemplo a la vez. Si ademas quieres que tenga los mismo elementos en cada elemento, queda como ejercicio para el lector

Espero que era esto lo que preguntabas.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 20/10/2003, 20:59
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 21 años, 10 meses
Puntos: 0
Gracias Josemi, era exactamente lo que preguntaba.
Aunque me hubiese gustado no tener que recorrer el array para saberlo. Implementare entonces este metodo. Gracias.
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 04:04.