Ir al contenido


Foto

Cómo obtener el índice de un Array en PHP

php

Mejor respuesta enecumene , 13 enero 2017 - 08:56

Hazlo así y se te devolverá la llave/índice del arreglo:

php
  1. $array = array(
  2. array("id" => 1, "prod" => "JABON"),
  3. array("id" => 2, "prod" => "DETERGENTE")
  4. );
  5.  
  6. echo '<ul>';
  7. foreach($array as $key => $prod) {
  8. echo '<li>' . $key . ' - ' . $prod["id"] . ' - ' . $prod["prod"];
  9. }
  10. echo '</ul>';

Esta vez sí está probado.
 
Saludos. Ir al mensaje completo


  • Por favor identifícate para responder
9 respuestas en este tema

#1 xPAPUx

xPAPUx

    Member

  • Miembros
  • PipPip
  • 24 mensajes

Escrito 13 enero 2017 - 07:16

Señores que pena la joda, tengo un array multidimensional el cual estoy volcando en una tabla para mostrar los productos que se han seleccionado, pero con el fin de que el usuario puede elimimar uno en especial necesito saber como le hago para mostrar el numero de la linea de dicho array:

 

hago un print r al array y el resultado es este, donde lo que esta en rojo es lo que me muestra la tabla luego de procesarlo con un foreach, pero necesito saber como hago para imprimir en pantalla lo que esta en verde para poder borrar solo la linea que se necesite mas no todo el array:

 

Array (

[0] => Array ( [id] => 1 [cod] => SO3Q0 [nom] => RAYBAN AVIATOR 2 [canti] => 2 [total] => 160000 [precio] => 80000 )

[1] => Array ( [id] => 2 [cod] => 7O97P [nom] => WAYFAR [canti] => 4 [total] => 32000 [precio] => 8000 )

[2] => Array ( [id] => 1 [cod] => SO3Q0 [nom] => RAYBAN AVIATOR 2 [canti] => 1 [total] => 80000 [precio] => 80000 )

[3] => Array ( [id] => 2 [cod] => 7O97P [nom] => WAYFAR [canti] => 2 [total] => 16000 [precio] => 8000 ) )

 

De nuevo gracias por su sabiduria jeje un abrazo.


  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 13 enero 2017 - 07:44


php
  1. $arreglo = array(tu arreglo);
  2.  
  3. while ($miArreglo = current($arreglo)) {
  4. if ($miArreglo['nom'] == 'WAYFAR') {
  5. echo key($arreglo).'<br />';
  6. }
  7. next($arreglo);

No lo he probado, lo hice al vuelo pero te da una pista, la función Key() te devuelve la clave del arreglo.

 

Saludos


  • 0

#3 xPAPUx

xPAPUx

    Member

  • Miembros
  • PipPip
  • 24 mensajes

Escrito 13 enero 2017 - 07:54

El problema de key(), es que me muestra la clave de cada arreglo y todos serian 1, te receurdo que tengo un array multidimensional y al procesarlo con foreach se convierte en arreglos independientes por lo tanto usar el key() me va a devolver el mismo valor, no se si me hago entender. Por otro lado use lo siguiente que si me muestra la clave de cada uno de los array: array_keys($_SESSION['PROD']) este si me devuelve las claves de cada uno el prpblema es que para procesarlo debo usar un foreach dentro del foreach que ya tengo y me esta repitiendo todo el proceso la cantidad de veces que tenga en arrays dentro del array principal jajaja es un caos.


  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 13 enero 2017 - 08:05

Pues creo que tienes mal planteada la forma en que lo haces, postea tu código aquí y que quieres hacer con ella, a ver si le damos la vuelta al asunto.

 

Saludos.


  • 0

#5 xPAPUx

xPAPUx

    Member

  • Miembros
  • PipPip
  • 24 mensajes

Escrito 13 enero 2017 - 08:34

con esto creo las filas de la tabla:


php
  1. <?php if ($_SESSION['PROD'] == 0){} else {foreach($_SESSION['PROD'] as $pro){ ?>
  2. <tr>
  3. <td><?php echo $pro['cod']; ?></td>
  4. <td><?php echo $pro['nom']; ?></td>
  5. <td class="info"><?php echo number_format ($pro['precio'],0,'','.');?></td>
  6. <td class="warning"><?php echo $pro['canti']; ?></td>
  7. <td class="success"><?php echo number_format ($pro['total'],0,'','.');?></td>
  8. <td> ACA DEBERIA IR EL BOTON PARA ELIMINAR EL PRODUCTO DE LA LISTA </td>
  9. </tr>
  10. <?php };?>

Hasta acá no hay pedo el resultado es:

 

https://drive.google...iew?usp=sharing

 

Para generar el botón  necesito la clave de cada arreglo y para crear el botón uso esto:


php
  1. <?php foreach (array_keys($_SESSION['PROD']) as $key) {?>
  2. <td><a href="creafactura.php?key=<?php echo $key; ?>"><button type='button' class='btn btn-danger btn-xs center-block'>Borrar</button></a></td>
  3. <?php }; ?>

Esto me crea el botón correcto para eliminar el producto, el problema es que no puedo usar ese foreach dentro del otro foreach por que me queda algo así:


php
  1. <?php if ($_SESSION['PROD'] == 0){} else {foreach($_SESSION['PROD'] as $pro){ ?>
  2. <tr>
  3. <td><?php echo $pro['cod']; ?></td>
  4. <td><?php echo $pro['nom']; ?></td>
  5. <td class="info"><?php echo number_format ($pro['precio'],0,'','.');?></td>
  6. <td class="warning"><?php echo $pro['canti']; ?></td>
  7. <td class="success"><?php echo number_format ($pro['total'],0,'','.');?></td>
  8.  
  9. <?php foreach (array_keys($_SESSION['PROD']) as $key) {?>
  10. <td><a href="creafactura.php?key=<?php echo $key; ?>"><button type='button' class='btn btn-danger btn-xs center-block'>Borrar</button></a></td>
  11. <?php }; ?>
  12. </tr>
  13. <?php };?>

https://drive.google...iew?usp=sharing

 

Y si agrego otro producto es un botón nuevo en la misma fila, así:

 

https://drive.google...iew?usp=sharing

 

la cuestión es que no he podido conseguir que dentro de uno solo foreach me haga lo de dos foreach, intente con un AND dentro de uno  y pues no se puede jajaja, use el foreach para crear botones fuera del foreach de la lista de productos y pues no quedan en la misma linea, no se que hacer.


  • 0

#6 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 13 enero 2017 - 08:41

Es que no tienes que hacer otro foreach para ello simplemente la función Key() sobre $_SESSION['PROD'], o sea, una de las dos debe funcionarte:


php
  1. Key($_SESSION['PROD'])
  2.  
  3. ó
  4.  
  5. Key($prod);


  • 0

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 13 enero 2017 - 08:56   Mejor respuesta

Hazlo así y se te devolverá la llave/índice del arreglo:

php
  1. $array = array(
  2. array("id" => 1, "prod" => "JABON"),
  3. array("id" => 2, "prod" => "DETERGENTE")
  4. );
  5.  
  6. echo '<ul>';
  7. foreach($array as $key => $prod) {
  8. echo '<li>' . $key . ' - ' . $prod["id"] . ' - ' . $prod["prod"];
  9. }
  10. echo '</ul>';

Esta vez sí está probado.
 
Saludos.
  • 0

#8 xPAPUx

xPAPUx

    Member

  • Miembros
  • PipPip
  • 24 mensajes

Escrito 13 enero 2017 - 08:57

Ahí es donde no sirve, por que si uso:


php
  1. <?php if ($_SESSION['PROD'] == 0){} else {foreach($_SESSION['PROD'] as $pro){ ?>
  2. <tr>
  3. <td><?php echo $pro['cod']; ?></td>
  4. <td><?php echo $pro['nom']; ?></td>
  5. <td class="info"><?php echo number_format ($pro['precio'],0,'','.');?></td>
  6. <td class="warning"><?php echo $pro['canti']; ?></td>
  7. <td class="success"><?php echo number_format ($pro['total'],0,'','.');?></td>
  8. <td><?php echo key($_SESSION['PROD']) ?></td>
  9. </tr>
  10. <?php };?>

La clave es la misma para cualquier producto, así (ahí solo estoy imprimiendo la clave no genero el botón para que veas el resultado):

 

https://drive.google...WVJxZXk1NWQwWXc

 

 

Y si uso $key($pro) el resultado es "id" en todas así:

 

https://drive.google...UXJtY0kyc1pxTEk


  • 0

#9 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 13 enero 2017 - 08:59

Sí, estuve equivocado, debajo de ese comentario está la respuesta correcta.
  • 0

#10 xPAPUx

xPAPUx

    Member

  • Miembros
  • PipPip
  • 24 mensajes

Escrito 13 enero 2017 - 09:03

Estaba llorando por nada jajajajaja, solo fue agregar eso:


php
  1. <?php if ($_SESSION['PROD'] == 0){} else {foreach($_SESSION['PROD'] as $key => $pro){ ?>
  2. <tr>
  3. <td><?php echo $pro['cod']; ?></td>
  4. <td><?php echo $pro['nom']; ?></td>
  5. <td class="info"><?php echo number_format ($pro['precio'],0,'','.');?></td>
  6. <td class="warning"><?php echo $pro['canti']; ?></td>
  7. <td class="success"><?php echo number_format ($pro['total'],0,'','.');?></td>
  8. <td><a href="creafactura.php?key=<?php echo $key; ?>"><button type='button' class='btn btn-danger btn-xs center-block'>Borrar</button></a></td>
  9. </tr>
  10. <?php };?>

Solo era agregar as $key

 

ahora si puedo dormir en paz ajajaja sos un genio, la verdad es que a veces uno se enreda por cosas tan simples como esta.


  • 0





Etiquetado también con una o más de estas palabras: php

IP.Board spam blocked by CleanTalk.