Foros del Web » Programando para Internet » PHP »

Foreach Unset no funciona!

Estas en el tema de Foreach Unset no funciona! en el foro de PHP en Foros del Web. Pues veran.... mi formulario recibe una lista con nombres los cuales almacena en un array por medio del explode Código PHP:   $alumno = explode ( ...
  #1 (permalink)  
Antiguo 20/06/2011, 18:55
Avatar de Aaronus23  
Fecha de Ingreso: diciembre-2010
Ubicación: https://home
Mensajes: 81
Antigüedad: 13 años, 11 meses
Puntos: 4
Foreach Unset no funciona!

Pues veran.... mi formulario recibe una lista con nombres los cuales almacena en un array por medio del explode
Código PHP:
  $alumno=explode("\n",$_POST['alumnos']); 
pero aqui viene el problema: en caso de que una linea este vacia es necesario eliminar esa entrada del array completamente

Código:
Nombre1

Nombre2
asi ese salto de linea entre "nombre1" y "nombre2" queda almacenado en el array y lo trato de eliminar de la siguiente manera

Código PHP:
foreach ($alumno as $item) {
if (
$item==chr(13)) {
        unset (
$item);
    }

pero no funciona... y no tengo idea porque
  #2 (permalink)  
Antiguo 20/06/2011, 19:57
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Foreach Unset no funciona!

creo que puedes usar la funcion empty y hacer algo como esto
Código PHP:
Ver original
  1. foreach ($alumno as $item) {
  2. if(!empty($item)){
  3.    $almunos[] = $item;
  4. }
y asi el array alumnos tendra solo los que no esten vacios, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 20/06/2011, 20:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Foreach Unset no funciona!

Usa array_filter() que para eso existe.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 20/06/2011, 20:14
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Foreach Unset no funciona!

Si, pero al parecer no funciona pateke... , no repitas los threads Aaronus23
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 20/06/2011, 20:23
Avatar de Aaronus23  
Fecha de Ingreso: diciembre-2010
Ubicación: https://home
Mensajes: 81
Antigüedad: 13 años, 11 meses
Puntos: 4
Respuesta: Foreach Unset no funciona!

Cita:
Iniciado por pateketrueke Ver Mensaje
Usa array_filter() que para eso existe.
lo haria pero no se como ponerlo a manera de callback :P

AUXILIO!
  #6 (permalink)  
Antiguo 20/06/2011, 20:24
Avatar de Aaronus23  
Fecha de Ingreso: diciembre-2010
Ubicación: https://home
Mensajes: 81
Antigüedad: 13 años, 11 meses
Puntos: 4
Respuesta: Foreach Unset no funciona!

Cita:
Iniciado por masterpuppet Ver Mensaje
Si, pero al parecer no funciona pateke... , no [URL="[/URL] los threads Aaronus23
Lo lamento, borrare el otro en seguida!
-----------------------------------------------------
Edito, NO LO PUEDO BORRAR LOL

Última edición por Aaronus23; 20/06/2011 a las 20:25 Razón: :P
  #7 (permalink)  
Antiguo 20/06/2011, 20:26
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Foreach Unset no funciona!

te fijaste en el ejemplo sin callback del manual http://php.net/manual/en/function.ar...p#example-4132
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #8 (permalink)  
Antiguo 20/06/2011, 20:31
Avatar de Aaronus23  
Fecha de Ingreso: diciembre-2010
Ubicación: https://home
Mensajes: 81
Antigüedad: 13 años, 11 meses
Puntos: 4
Respuesta: Foreach Unset no funciona!

Cita:
Iniciado por carlos_belisario Ver Mensaje
te fijaste en el ejemplo sin callback del manual [url]
si, pero yo quiero filtrar los saltos de linea "\n"
  #9 (permalink)  
Antiguo 20/06/2011, 21:22
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Foreach Unset no funciona!

Con algo así debería funcionar:

Código PHP:
Ver original
  1. foreach ($alumno as $key => $item) {
  2.     if ($item == chr(13)) {
  3.         unset ($alumno[$key]);
  4.     }
  5. }

lo mismo pero con array_filter(para PHP 5.3+, podes utilizar create_function para PHP 5.3-)

Código PHP:
Ver original
  1. $arr = array_filter($alumno, function($el) {
  2.         return ord($el) != 13;
  3. });
__________________
http://es.phptherightway.com/
thats us riders :)
  #10 (permalink)  
Antiguo 21/06/2011, 16:19
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Foreach Unset no funciona!

A mi me resultó correctamente de esta forma
Código PHP:
Ver original
  1. <?php
  2. $value = null;
  3. if(!empty($_GET['foo'])){
  4.     $foo = explode(PHP_EOL, $_GET['foo']);
  5.     echo '<pre>';
  6.     print_r($foo);
  7.  
  8.     $value = array_filter($foo);
  9.     print_r($value);
  10.     echo '</pre>';
  11. }
  12. ?>
  13. <form action="<?php echo $_SERVER['PHP_SELF']; ?>">
  14. <textarea name="foo" rows="5" cols="40"></textarea><br />
  15. <input type="submit" value="submit" />
  16. </form>
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 21/06/2011, 16:38
Avatar de Aaronus23  
Fecha de Ingreso: diciembre-2010
Ubicación: https://home
Mensajes: 81
Antigüedad: 13 años, 11 meses
Puntos: 4
Respuesta: Foreach Unset no funciona!

Cita:
Iniciado por masterpuppet Ver Mensaje
Con algo así debería funcionar:

Código PHP:
Ver original
  1. foreach ($alumno as $key => $item) {
  2.     if ($item == chr(13)) {
  3.         unset ($alumno[$key]);
  4.     }
  5. }

lo mismo pero con array_filter(para PHP 5.3+, podes utilizar create_function para PHP 5.3-)

Código PHP:
Ver original
  1. $arr = array_filter($alumno, function($el) {
  2.         return ord($el) != 13;
  3. });

Perfecto!

Etiquetas: foreach, unset
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 22:20.