Foros del Web » Programando para Internet » PHP »

Array

Estas en el tema de Array en el foro de PHP en Foros del Web. Hola. Quiero saber qué función se ocupaba para determinar la longitud de un arreglo, es decir, tengo un arreglo bidimensional donde supongamos que el while ...
  #1 (permalink)  
Antiguo 26/01/2012, 18:29
 
Fecha de Ingreso: agosto-2011
Mensajes: 100
Antigüedad: 12 años, 8 meses
Puntos: 1
Pregunta Array

Hola.

Quiero saber qué función se ocupaba para determinar la longitud de un arreglo, es decir, tengo un arreglo bidimensional donde supongamos que el while termina en $i = 10:

Código PHP:
Ver original
  1. $i = 0;
  2.  
  3. while(condicion){
  4.  
  5. $arreglo[1][$i] = "elemento $i";
  6. $arreglo[2][$i] = "elemento $i";
  7.  
  8. }

¿Cómo lo hago para, dentro de un for, mostrar los elementos de ese arreglo?, algo así: for($f = 0; $f <= longitud_arreglo ; $f++)... algo me acordaba, probé con la función lenght, pero no me funcionó... esto de acordarse de funciones que usabas hace tiempo,

Gracias de antemano.
  #2 (permalink)  
Antiguo 26/01/2012, 18:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Array

No se trata de por no acordarse ir a preguntar al foro, se trata de consultar alguna referencia.

Y bueno, si no sabes la longitud de los elementos es mejor siempre usar foreach().
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 26/01/2012, 18:38
 
Fecha de Ingreso: agosto-2011
Mensajes: 100
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Array

Cita:
Iniciado por pateketrueke Ver Mensaje
No se trata de por no acordarse ir a preguntar al foro, se trata de consultar alguna referencia.

Y bueno, si no sabes la longitud de los elementos es mejor siempre usar foreach().
Disculpa... estaba tratando de buscar la función en el manual de PHP, pero me perdía entre los str... y las funciones propias del array... pero me acuerdo que había una función que te determinaba el largo de un arreglo.

Te voy a dar el ejemplo práctico que quiero solucionar... tomando el primer ejemplo que puse al abrir el tema, la condición terminaba en 10... supongamos que la consulta de la BD solo me arroja 3 registros, por lo que la condición terminaría en 3 (porque el while es "while($elemento = sql_fetch_array($consulta))")... en el for no puedo poner $f <= 10 en la segunda condición... por eso pregunto por la función que te retorne la longitud del arreglo.
  #4 (permalink)  
Antiguo 26/01/2012, 18:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Array

Y yo te digo, que si desconoces la longitud del array puedes usar foreach().

Para el caso es mejor que usar for().
http://php.net/foreach
http://php.net/for
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 26/01/2012, 18:43
 
Fecha de Ingreso: agosto-2011
Mensajes: 100
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Array

Cita:
Iniciado por pateketrueke Ver Mensaje
Y yo te digo, que si desconoces la longitud del array puedes usar foreach().

Para el caso es mejor que usar for().
http://php.net/foreach
http://php.net/for
Si entiendo que es más fácil usar el foreach... pero me gustaría saber la función que te digo, no quiero morir con la duda,
  #6 (permalink)  
Antiguo 26/01/2012, 18:48
 
Fecha de Ingreso: agosto-2011
Mensajes: 100
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Array

Te explico entonces mi problema... tengo un elemento que tiene datos de condición y forma (pueden ser 3 pares de datos o 10 pares), el asunto es que los extraigo de la BD de forma descendente y limitando a 10, por lo que el primer dato que recibo es el más reciente y así hasta el más viejo... para mostrarlos en un gráfico debe ser al revés, desde el más viejo hasta el más reciente, y por eso estoy preguntando por la función que retorna la longitud del arreglo, para hacer un for regresivo para mostrar la información correctamente.

Ojalá me hayas entendido...
  #7 (permalink)  
Antiguo 26/01/2012, 18:58
 
Fecha de Ingreso: agosto-2011
Mensajes: 100
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Array

Cita:
Iniciado por Feligo Ver Mensaje
Si entiendo que es más fácil usar el foreach... pero me gustaría saber la función que te digo, no quiero morir con la duda,
Por ejemplo, encontré la función count(), que te retorna la cantidad de elementos que hay, pero en mi array no funciona... porque es bidimensional, tiene 20 elementos, y count() solo me retorna la cantidad de elementos de la primera fila...
  #8 (permalink)  
Antiguo 26/01/2012, 19:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Array

Obviamente no existe una función para contar los elementos de un array de mas de una dimensión, para eso debes usar la lógica y tu sentido común.
Código PHP:
echo count($arreglo[0]);
echo 
count($arreglo[1]);
// etc... 
Y para hacer un "for regresivo" como le dices puedes usar también tu creatividad, simplemente hacer array_reverse() para invertir el orden de tu arreglo y luego usas foreach().

¡That's it!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 26/01/2012, 19:52
 
Fecha de Ingreso: agosto-2011
Mensajes: 100
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Array

Cita:
Iniciado por pateketrueke Ver Mensaje
Obviamente no existe una función para contar los elementos de un array de mas de una dimensión, para eso debes usar la lógica y tu sentido común.
Código PHP:
echo count($arreglo[0]);
echo 
count($arreglo[1]);
// etc... 
Y para hacer un "for regresivo" como le dices puedes usar también tu creatividad, simplemente hacer array_reverse() para invertir el orden de tu arreglo y luego usas foreach().

¡That's it!
No creo que me hayas entendido... el array_reverse me cambia el orden de los elementos dentro de una misma fila, cosa que no quiero... mira te muestro este ejemplo para ver si me puedes ayudar diciéndome cómo lo harías:

Código PHP:
Ver original
  1. <?php
  2. //ejemplo 1
  3.         $arreglo[1][0] = 1;
  4.         $arreglo[2][0] = 10;
  5.         --
  6.         $arreglo[1][1] = 2;
  7.         $arreglo[2][1] = 20;
  8.         --
  9.         $arreglo[1][2] = 3;
  10.         $arreglo[2][2] = 30;
  11.        
  12. //ejemplo 2
  13.         $arreglo[1][0] = 1;
  14.         $arreglo[2][0] = 10;
  15.         --
  16.         $arreglo[1][1] = 2;
  17.         $arreglo[2][1] = 20;
  18.         --
  19.         $arreglo[1][2] = 3;
  20.         $arreglo[2][2] = 30;
  21.         --
  22.         $arreglo[1][3] = 4;
  23.         $arreglo[2][3] = 40;
  24.         --
  25.         $arreglo[1][4] = 5;
  26.         $arreglo[2][4] = 50;
  27.         --
  28.         $arreglo[1][5] = 6;
  29.         $arreglo[2][5] = 60;
  30. ?>
¿Cómo lo harías tú para que en el arreglo del ejemplo 1, los pares de n° 3 y 30 queden en la posición $arreglo[1][0]-$arreglo[2][0] (primeros) y los pares de n° 1 y 10 queden al final... y que la solución también me sirva para reordenar el arreglo del ejemplo 2?

Gracias por tu tiempo igual...
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 10:06.