Foros del Web » Programando para Internet » PHP »

funcion para borrar ceros error?

Estas en el tema de funcion para borrar ceros error? en el foro de PHP en Foros del Web. hola miren, por que no me anda esto , me borra todos los valoores... Código PHP: function  borra_ceros ( $arreglo ) { $corre = count ...
  #1 (permalink)  
Antiguo 11/05/2013, 18:46
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 6 años, 9 meses
Puntos: 3
funcion para borrar ceros error?

hola miren, por que no me anda esto , me borra todos los valoores...

Código PHP:
function borra_ceros($arreglo)
{
$corre=count($arreglo);

for(
$i=0;$i<$corre;$i++)
{
if(
$arreglo[$i]==0)
{
unset(
$arr[$i]);
}
else
{
$sin_ceros[]=$arreglo[$i];
}
}

return 
$sin_ceros;


osea ingresa un array y tiene que borrar los que tengan ceros,.. EL VALOR; NO EL INDICE; ustedes ven un error...??
  #2 (permalink)  
Antiguo 11/05/2013, 18:53
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 15 años, 8 meses
Puntos: 406
Respuesta: funcion para borrar ceros error?

Cita:
ustedes ven un error...??
No uno, varios, para comenzar, primero verificas que el valor del indice sea un entero y sea igual a 0, si es igual "borras" el indice al arreglo $arr, pero NO EXISTE DICHA VARIABLE, lo mas cercano es $arreglo, ahora, si no es igual a 0 agregas el valor en otra arreglo, pero dicho arreglo no existe, e fin, puros errores, primero, si vas a generar un nuevo array lo mejor es que definas antes del for para que no genere errores, segundo, deberías comprobar si el valor es mayor a 0, ya que si le indicas si es igual puedes obtener resultados incoherentes, aparte, si es menor o igual a 0 no deberías hacer nada, solo si es mayor lo agregas al nuevo arreglo y este lo retornas en la función...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 11/05/2013, 18:56
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 6 años, 9 meses
Puntos: 3
Respuesta: funcion para borrar ceros error?

ASI?

Código PHP:



function borra_ceros($arreglo)
{
$corre=count($arreglo);

for(
$i=0;$i<$corre;$i++)
{
if(
$arreglo[$i]!=0)
{
$sin_ceros[]=$arreglo[$i];
}
}
return 
$sin_ceros;


  #4 (permalink)  
Antiguo 11/05/2013, 18:59
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 15 años, 8 meses
Puntos: 406
Respuesta: funcion para borrar ceros error?

Lees pero no analizas lo que estas leyendo...

Código PHP:
Ver original
  1. function borra_ceros($arreglo)
  2. {
  3. $corre=count($arreglo);
  4. $sin_ceros = array();
  5. for($i=0;$i<$corre;$i++) {
  6.      if($arreglo[$i]>0) {
  7.           $sin_ceros[]=$arreglo[$i];
  8.      }
  9. }
  10. return $sin_ceros;
  11.  
  12. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 11/05/2013, 19:04
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 6 años, 9 meses
Puntos: 3
Respuesta: funcion para borrar ceros error?

Cita:
Iniciado por Nemutagk Ver Mensaje
Lees pero no analizas lo que estas leyendo...

Código PHP:
Ver original
  1. function borra_ceros($arreglo)
  2. {
  3. $corre=count($arreglo);
  4. $sin_ceros = array();
  5. for($i=0;$i<$corre;$i++) {
  6.      if($arreglo[$i]>0) {
  7.           $sin_ceros[]=$arreglo[$i];
  8.      }
  9. }
  10. return $sin_ceros;
  11.  
  12. }
me sigue borrando todos...


le paso esto
Array ( [0] => 2[1] => 2[2] => 3)


y me devuelve esto

Array ( [0] => 2 )
  #6 (permalink)  
Antiguo 11/05/2013, 19:16
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 15 años, 8 meses
Puntos: 406
Respuesta: funcion para borrar ceros error?

Algo no estas haciendo bien, puedes usar intval() para que convierta automáticamente el valor en int, aunque debería funcionar como tal, muestra tu código completo y el/los array a "limpiar"...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 11/05/2013, 19:16
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 11 años, 11 meses
Puntos: 20
Respuesta: funcion para borrar ceros error?

Oo A mi me funciona correcto:

Código PHP:
<?php
error_reporting
(E_ALL);

function 
borra_ceros($arreglo)
{
    
$corre=count($arreglo);
    
$sin_ceros = array();
    
    for(
$i=0$i $corre$i++) 
    {
         if((int)
$arreglo[$i] != 0
         {
              
array_push($sin_ceros$arreglo[$i]);
         }
    }
    
    return 
$sin_ceros;
}

$arr = array(1010101);
$arr2 = array("1""0""1""0""1""0""1");
$arr3 = array(223);

echo 
"<pre>";
print_r(borra_ceros($arr));
print_r(borra_ceros($arr2));
print_r(borra_ceros($arr3));
echo 
"</pre>";
?>
Result:
Código:
Array
(
    [0] => 1
    [1] => 1
    [2] => 1
    [3] => 1
)
Array
(
    [0] => 1
    [1] => 1
    [2] => 1
    [3] => 1
)
Array
(
    [0] => 2
    [1] => 2
    [2] => 3
)
  #8 (permalink)  
Antiguo 11/05/2013, 19:26
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 6 años, 9 meses
Puntos: 3
Respuesta: funcion para borrar ceros error?

el error creo que es este, (aunque estoy convencido que el codigo que puse al principio mio, funciona bien)

sucede que el array que le paso es este....

Array ( [0] => 2 [2] => 3 )


son 2 elementos, pero de distinto indice...

tendria que ser asi....

Array ( [0] => 2 [1] => 3 )

como lo paso?? a asi?? ja
  #9 (permalink)  
Antiguo 11/05/2013, 19:30
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 15 años, 8 meses
Puntos: 406
Respuesta: funcion para borrar ceros error?

Aun así debería funcionar, eso si, mandaría un warning al indicar que el indice X no existe, pero eso es fácil comprobando si existe con isset() en el if, por lo mismo, muestra tu código...

PD OBVIO, siempre y cuando el numero de items coincida con los indices dentro del array, si tienes 3 items y los indices son 0, 13 y 22 OBVIAMENTE no funcionará, en todo caso mejor usa foreach() en vez de for()

PD2 por cierto, también podrías usar sort() para re-ordenar los items dentro del array y generar indices auto-incrementables
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Última edición por Nemutagk; 11/05/2013 a las 19:38
  #10 (permalink)  
Antiguo 11/05/2013, 19:38
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 6 años, 9 meses
Puntos: 3
Respuesta: funcion para borrar ceros error?

eso del foreach no se como me decis..
osea , antes de entrar a la funcion que borra los ceros, tengo que ordenar,los indices, seguramentes haya una funcion...
  #11 (permalink)  
Antiguo 11/05/2013, 19:44
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 15 años, 8 meses
Puntos: 406
Respuesta: funcion para borrar ceros error?

Cita:
Iniciado por aldo_rengo Ver Mensaje
eso del foreach no se como me decis..
o.O tienes idea de que es foreach()? no se te ocurrió checar el manual?
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #12 (permalink)  
Antiguo 11/05/2013, 19:48
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 6 años, 9 meses
Puntos: 3
Respuesta: funcion para borrar ceros error?

Código PHP:
function borra_ceros($arreglo)
{
$corre=count($arreglo);

for(
$i=0;$i<$corre;$i++)
{

$fruit array_shift($arreglo);

if(
$fruit!=0)
{
$sin_ceros[]=$fruit;
}

}

return 
$sin_ceros;



hasta el "fruit" del manual de php , lo copie.
asi anda..
  #13 (permalink)  
Antiguo 11/05/2013, 19:55
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 15 años, 8 meses
Puntos: 406
Respuesta: funcion para borrar ceros error?

Me dejas sin comentarios, solo complicas mas el código....

Código PHP:
Ver original
  1. function borra_ceros($arreglo)
  2. {
  3. $corre=count($arreglo);
  4. $sin_ceros = array();
  5. foreach($arreglo as $item) {
  6.      if($item>0) {
  7.           $sin_ceros[]=$item;
  8.      }
  9. }
  10. return $sin_ceros;
  11.  
  12. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: funcion
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 09:17.