Foros del Web » Programando para Internet » PHP »

Limpiar un ARRAY y dejarlo solo con numeros

Estas en el tema de Limpiar un ARRAY y dejarlo solo con numeros en el foro de PHP en Foros del Web. Buenas a todos!! Tengo una duda, tengo un formulario donde los usuarios pueden hacer multiples pedidos, estos pedidos los guardo en un array y despues ...
  #1 (permalink)  
Antiguo 07/11/2012, 10:35
 
Fecha de Ingreso: septiembre-2012
Ubicación: Palma de Mallorca
Mensajes: 25
Antigüedad: 12 años, 2 meses
Puntos: 1
Exclamación Limpiar un ARRAY y dejarlo solo con numeros

Buenas a todos!!

Tengo una duda, tengo un formulario donde los usuarios pueden hacer multiples pedidos, estos pedidos los guardo en un array y despues los trato en una funcion.
Los pedidos son siempre numeros de telefono.

Mi duda es la siguiente, como puedo limpiar un array para que solo contenga numeros!! Les dejo el codigo de como trato el array pasado por POST. Muchas gracias a todos, a ver si alguien me puede echar una mano. Saludos!!

Código PHP:
 $la_cadena $_POST['imeiarray']; //Pasamos el array por POST a la variable la_cadena
      
            
$mi_array explode("^"$la_cadena); 
                

            
$totalPrecioPedido= ($precioPorTerminal*$totalElementos);
            
$totalCreditosUsuario $_SESSION['creditos']-$totalPrecioPedido;//Creditos despues de la compra
           

           
foreach ($mi_array as $valoresArray) {

        
          if(
is_numeric($valoresArray)) {
               
$query "Insert into pedido (p_user_id,p_total_precio,p_imei,p_servicio_id,p_numero_pedido,p_fecha_pedido,p_estado) values ('$userId','$totalPrecio','$valoresArray','$servicioId','$numpedido','$fechaPedido','1')";
               echo 
'<br>';
               echo 
$query;
               
$res mysql_query($query);
                }else {
             echo 
"no es numero".$valoresArray;
                }

            }
//Fin Foreach ARRAY

      

            
if (mysql_affected_rows() > 0) {
                
                
$queryU "UPdate user set u_creditos='$totalCreditosUsuario' where u_id='$userId'";
                
$res mysql_query($queryU);

                
$_SESSION['creditos'] = $totalCreditosUsuario;
                echo 
'<div class="w1000 ok_row"><p>Tu Pedido se ha creado correctamente</p></div>';
            } else {
                echo 
'<div class="w1000 failed_row"><p>Hubo un error al procesar su pedido</p></div>';
            } 
  #2 (permalink)  
Antiguo 07/11/2012, 10:53
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: Limpiar un ARRAY y dejarlo solo con numeros

Puedes usar array_filter() e is_numeric(), consulta el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 07/11/2012, 11:23
 
Fecha de Ingreso: septiembre-2012
Ubicación: Palma de Mallorca
Mensajes: 25
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Limpiar un ARRAY y dejarlo solo con numeros

Cita:
Iniciado por pateketrueke Ver Mensaje
Puedes usar array_filter() e is_numeric(), consulta el manual.
Hola pateketrueke!!Gracias por contestar!
Si te fijas lo estoy usando para que solo me inserte en la BD los que son numericos,
pero lo que necesito es contar cuantos no lo son para restar el importe al pedido...jeje. Como creo los input dinamicamente, creo, que no puedo validarlos con validate.js, por eso se me complico un poco :S
  #4 (permalink)  
Antiguo 07/11/2012, 11:38
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 9 meses
Puntos: 155
Respuesta: Limpiar un ARRAY y dejarlo solo con numeros

con una variable que vaya contando cuando no son numericos no?

Código PHP:
Ver original
  1. <? $la_cadena = $_POST['imeiarray']; //Pasamos el array por POST a la variable la_cadena
  2.        
  3.             $mi_array = explode("^", $la_cadena);  
  4.                  
  5.  
  6.             $totalPrecioPedido= ($precioPorTerminal*$totalElementos);
  7.             $totalCreditosUsuario = $_SESSION['creditos']-$totalPrecioPedido;//Creditos despues de la compra
  8.            
  9.             $nosonnumericos=0;# la variable malevola
  10.           foreach ($mi_array as $valoresArray) {
  11.  
  12.          
  13.           if(is_numeric($valoresArray)) {
  14.                $query = "Insert into pedido (p_user_id,p_total_precio,p_imei,p_servicio_id,p_numero_pedido,p_fecha_pedido,p_estado) values ('$userId','$totalPrecio','$valoresArray','$servicioId','$numpedido','$fechaPedido','1')";
  15.                echo '<br>';
  16.                echo $query;
  17.                $res = mysql_query($query);
  18.                 }else {
  19.              echo "no es numero".$valoresArray;
  20.              $nosonnumericos++;#la incrementas cada que no es numerico
  21.                }
  22.  
  23.             }//Fin Foreach ARRAY
  24.  
  25.             echo "datos no numericos $nosonnumericos";#la imprimes pa comprobar
  26.  
  27.             if (mysql_affected_rows() > 0) {
  28.                  
  29.                 $queryU = "UPdate user set u_creditos='$totalCreditosUsuario' where u_id='$userId'";
  30.                 $res = mysql_query($queryU);
  31.  
  32.                 $_SESSION['creditos'] = $totalCreditosUsuario;
  33.                 echo '<div class="w1000 ok_row"><p>Tu Pedido se ha creado correctamente</p></div>';
  34.             } else {
  35.                 echo '<div class="w1000 failed_row"><p>Hubo un error al procesar su pedido</p></div>';
  36.             }  
  37. ?>
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #5 (permalink)  
Antiguo 07/11/2012, 11:45
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: Limpiar un ARRAY y dejarlo solo con numeros

En un if coloca !is_numeric y allí creas un conteo de los que no son.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 07/11/2012, 12:33
 
Fecha de Ingreso: septiembre-2012
Ubicación: Palma de Mallorca
Mensajes: 25
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Limpiar un ARRAY y dejarlo solo con numeros

Cita:
Iniciado por mogurbon Ver Mensaje
con una variable que vaya contando cuando no son numericos no?

Código PHP:
Ver original
  1. <? $la_cadena = $_POST['imeiarray']; //Pasamos el array por POST a la variable la_cadena
  2.        
  3.             $mi_array = explode("^", $la_cadena);  
  4.                  
  5.  
  6.             $totalPrecioPedido= ($precioPorTerminal*$totalElementos);
  7.             $totalCreditosUsuario = $_SESSION['creditos']-$totalPrecioPedido;//Creditos despues de la compra
  8.            
  9.             $nosonnumericos=0;# la variable malevola
  10.           foreach ($mi_array as $valoresArray) {
  11.  
  12.          
  13.           if(is_numeric($valoresArray)) {
  14.                $query = "Insert into pedido (p_user_id,p_total_precio,p_imei,p_servicio_id,p_numero_pedido,p_fecha_pedido,p_estado) values ('$userId','$totalPrecio','$valoresArray','$servicioId','$numpedido','$fechaPedido','1')";
  15.                echo '<br>';
  16.                echo $query;
  17.                $res = mysql_query($query);
  18.                 }else {
  19.              echo "no es numero".$valoresArray;
  20.              $nosonnumericos++;#la incrementas cada que no es numerico
  21.                }
  22.  
  23.             }//Fin Foreach ARRAY
  24.  
  25.             echo "datos no numericos $nosonnumericos";#la imprimes pa comprobar
  26.  
  27.             if (mysql_affected_rows() > 0) {
  28.                  
  29.                 $queryU = "UPdate user set u_creditos='$totalCreditosUsuario' where u_id='$userId'";
  30.                 $res = mysql_query($queryU);
  31.  
  32.                 $_SESSION['creditos'] = $totalCreditosUsuario;
  33.                 echo '<div class="w1000 ok_row"><p>Tu Pedido se ha creado correctamente</p></div>';
  34.             } else {
  35.                 echo '<div class="w1000 failed_row"><p>Hubo un error al procesar su pedido</p></div>';
  36.             }  
  37. ?>

Hola mogurbon! Gracias por contestar! Funciono perfectamente, intente hacerlo con un contador antes de preguntar y no se por que no me salio:S. Muchas gracias por la solucion.

Si no te importa, una pregunta mas... existe alguna funcion que sirva para no agregar al ARRAY valores que no sean numeros...en plan validacion. Seguro que existe, pero no logro encontrarlo.Muchas gracias
  #7 (permalink)  
Antiguo 07/11/2012, 13:05
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 9 meses
Puntos: 155
Respuesta: Limpiar un ARRAY y dejarlo solo con numeros

la que te dijo el pakete


http://mx1.php.net/manual/es/function.array-filter.php

analizala y veras que si
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo

Etiquetas: limpiararray, numeros
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 21:55.