elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Resuelto] Array en php
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] Array en php  (Leído 3,441 veces)
codX

Desconectado Desconectado

Mensajes: 65


Es más complejo de lo que crees...


Ver Perfil
[Resuelto] Array en php
« en: 19 Septiembre 2019, 01:11 am »

Hola gente del foro. Estamos trabajando con php en la facu. Me dieron el siguiente ejercicio que la verdad no entiendo. Alguien me da una mano? Gracias.

19. Mostrar todos los elementos del siguiente arreglo por medio de la estructura for
array("valor1", 1234, array("cero", "uno", "dos", "tres"))


« Última modificación: 24 Septiembre 2019, 12:17 pm por #!drvy » En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.162



Ver Perfil
Re: Array en php
« Respuesta #1 en: 19 Septiembre 2019, 01:58 am »

Saludos,

- Que parte no entiendes?

- Puedes ir revisando:

https://www.php.net/manual/es/function.array.php
https://www.php.net/manual/es/function.count.php
https://www.php.net/manual/es/control-structures.for.php


En línea

codX

Desconectado Desconectado

Mensajes: 65


Es más complejo de lo que crees...


Ver Perfil
Re: Array en php
« Respuesta #2 en: 19 Septiembre 2019, 02:09 am »

para mi el array está mal definido

array("valor1", 1234, array("cero", "uno", "dos", "tres"))

como puede ser?
En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.162



Ver Perfil
Re: Array en php
« Respuesta #3 en: 19 Septiembre 2019, 03:00 am »

- Nop, un Array puede contener elementos de cualquier tipo, incluyendo otro Array: https://www.php.net/manual/es/language.types.array.php (aunque la mayoría de los ejemplos están hechos con Arrays asociativos)

- Solo tienes que recorrer el Array con las instrucciones que te permite el ejercicio, por ejemplo para iterar: foreach o for, para contar la cantidad de elementos del array: count(), para detectar si es un array o no: cout() o is_array(), etc.
En línea

codX

Desconectado Desconectado

Mensajes: 65


Es más complejo de lo que crees...


Ver Perfil
Re: Array en php
« Respuesta #4 en: 19 Septiembre 2019, 03:14 am »

Gracias  EdePC , vos como recorrerías ese array, mirá es la segunda clase de php, me parece que es mucho no se. Programo en C hace rato, pero eso nunca lo hice al menos en ese lenguaje. Por lo que entiendo no es una matriz, es como si fuesen arrays anidados? Gracias por el manual!!
« Última modificación: 19 Septiembre 2019, 03:17 am por decoder_2019 » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Array en php
« Respuesta #5 en: 19 Septiembre 2019, 03:32 am »

lo que entiendo no es una matriz, es como si fuesen arrays anidados?

literalmente eso es una matriz (hablando en informatica mas que en matemática) es un elemento de tipo vector que contiene elementos de tipo vector...
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.162



Ver Perfil
Re: Array en php
« Respuesta #6 en: 19 Septiembre 2019, 03:40 am »

- Como dije, dependerá del juego de instrucciones que te permita o exija utilizar el ejercicio, suponiendo que te exige utilizar for, count e if:

Código
  1. <?php
  2.  $array = array("valor1", 1234, array("cero", "uno", "dos", "tres"));
  3.  
  4.  for ( $i = 0; $i < count($array); $i++ ) {
  5.    if ( count($array[$i]) === 1 ) {
  6.      echo "\$array[$i] => $array[$i] <br>";
  7.    } else {
  8.      for ( $j = 0; $j < count($array[$i]); $j++ ) {
  9.        echo "\$array[$i][$j] => {$array[$i][$j]} <br>";
  10.      }
  11.    }
  12.  }

Citar
$array[0] => valor1
$array[1] => 1234
$array[2][0] => cero
$array[2][1] => uno
$array[2][2] => dos
$array[2][3] => tres

- Lo recomendable es siempre leerse un tutorial o curso o vídeos de introducción para mas o menos ver las capacidades del lenguaje y al menos tener en mente que juego de instrucciones utilizar para resolver un problema, yo recomendaría esta guía rápida de 218 págs. en español:
https://openlibra.com/es/book/programador-php-tomo-1

-- Luego siempre tener a mano la referencia completa del lenguaje, ya sea OnLine: https://www.php.net/manual/es/ u OffLine: https://www.php.net/distributions/manual/php_enhanced_es.chm
En línea

codX

Desconectado Desconectado

Mensajes: 65


Es más complejo de lo que crees...


Ver Perfil
Re: Array en php
« Respuesta #7 en: 19 Septiembre 2019, 03:56 am »

mmm EdePC vengo de C, en mi muno una matriz es tan diferente!! Igual el enunciado decía utilizar for.Muchas gracias. Lo voy a mirar una rato largo. Gracias por tu tiempo. Un abrazo!
« Última modificación: 19 Septiembre 2019, 04:00 am por decoder_2019 » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: Array en php
« Respuesta #8 en: 19 Septiembre 2019, 11:18 am »

Ojo con el código de @EdePC ya que hay un par de cosas que no se aconsejan o directamente están mal en PHP 7.2+.

Lo que esta mal (en versiones de PHP 7.2+) es que se está utilizado count sobre objetos que pueden no ser contables. A partir de 7.2, count lanzará un Warning si el parámetro no implementa Countable.  Además count puede ser muy confuso pues count('abc') además de lanzar un warning, devuelve true en forma de integro (1). Por tanto, ese código tiene un comportamiento indeseado. Por ejemplo, si $array resulta ser un string:

Código
  1. $array = 'tarta';

Código:
t => t
count(): Parameter must be an array or an object that implements Countable on line 4

https://www.php.net/manual/es/migration72.incompatible.php




El segundo problema es un más bien una practica desaconsejada. Meter count en el propio for como comparador, implica que cada vez que haga un ciclo, la función se volverá a ejecutar y por lo tanto, volverá a calcular el tamaño del array con el procesamiento que ello conlleva. Consideramos esto por ejemplo:

Código
  1. function _count($item) {
  2.  echo ' conteo ';
  3.  return count($item);
  4. }
  5.  
  6.  
  7. $array = array("valor1", "valor2", "valor3", "valor4");
  8.  
  9. for ($i = 0; $i < _count($array); $i++) {
  10.  echo $array[$i];
  11. }


Resultado:
Código:
conteo valor1 conteo valor2 conteo valor3 conteo valor4 conteo


Si el array no varia durante el proceso o no hace falta volver a calcular su tamaño en cada ciclo, es mejor hacer el conteo previamente.

Código
  1. for ($i = 0, $max = _count($array); $i < $max; $i++) {
  2.  echo $array[$i];
  3. }

Código:
conteo valor1valor2valor3valor4




Lo que te dan en problema que se te presenta, se llama array multidimensional mixto. PHP no es fuertemente tipado por lo tanto una matriz (array) puede contener cualquier cosa dentro de ella incluidas otras matrices (multidimensional) y valores de diferentes tipos (mixto).

https://www.w3schools.com/php/php_arrays_multi.asp
https://www.guru99.com/arrays.html

Si es obligatorio que uses for (tal y como sugiere el ejercicio) puedes hacerlo como ha mostrado @EdePC.

Código
  1. for ($i = 0, $max_i = count($array); $i < $max_i; $i++) {
  2.  
  3.  if (!is_array($array[$i])) {
  4.      echo $array[$i];
  5.      continue; // salto al siguiente ciclo
  6.  }
  7.  
  8.  for ($j = 0, $max_j = count($array[$i]); $j < $max_j; $j++) {
  9.      echo $array[$i][$j];
  10.  }
  11. }


Esto será válido solo para un array de 2 dimensiones. Puedes crear una función y hacerla recursiva para recorrer arrays de multiples dimensiones:

Código
  1. function recorrer($array)
  2. {
  3.    for ($i = 0, $max = count($array); $i < $max; $i++) {
  4.        if (is_array($array[$i])) {
  5.            recorrer($array[$i]);
  6.            continue;
  7.        }
  8.  
  9.        echo $array[$i];
  10.    }
  11. }
  12.  
  13.  
  14. $array = array("valor1", 1234, array("cero", "uno", "dos", "tres"));
  15. recorrer($array);
  16. //valor11234cerounodostres


Cabe destacar que PHP ya implementa funciones muy útiles para iterar arrays. Por ejemplo, en tu caso array_walk_recursive te viene al pelo.

Código
  1. function echo_value($value, $key) {
  2.    echo $value;
  3. }
  4.  
  5. $array = array("valor1", 1234, array("cero", "uno", "dos", "tres"));
  6. array_walk_recursive($array, 'echo_value');
  7. //valor11234cerounodostres

o de forma más compacta con funciones anónimas:

Código
  1. $array = array("valor1", 1234, array("cero", "uno", "dos", "tres"));
  2.  
  3. array_walk_recursive($array, function($value, $key) {
  4.    echo $value;
  5. });
  6. //valor11234cerounodostres

https://www.php.net/manual/es/function.array-walk-recursive.php
https://www.php.net/manual/es/functions.anonymous.php


Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con array... (Resuelto)
Programación C/C++
miketru 6 7,182 Último mensaje 9 Septiembre 2010, 01:35 am
por miketru
[RESUELTO] CopyMem Array VarTypes
Programación Visual Basic
Miseryk 7 5,212 Último mensaje 29 Junio 2013, 07:55 am
por Miseryk
[Resuelto] Allegro 5 - Array de BITMAPS
Programación C/C++
NOIS 0 1,814 Último mensaje 14 Noviembre 2014, 10:06 am
por NOIS
[Resuelto] Problemas con un Array
PHP
DeXon18 2 1,957 Último mensaje 3 Junio 2015, 20:22 pm
por DeXon18
[Resuelto] Mejor forma de declarar un array vacio?
PHP
@XSStringManolo 7 3,718 Último mensaje 2 Octubre 2019, 20:20 pm
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines