Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

277
Vistas
Eliminar precios desiguales de la lista de precios

Tengo una matriz de precios como esta.

 $arr = [200,201,203,205,207,300,209,212,0,211,0,0,301,213,214];

Arriba está la lista de precios, donde hay algunos números impares como 0, 300, 301

Estoy tratando de eliminar esos números impares siguiendo el código

 $fresharray = []; foreach($arr as $lol) { $diff = $lol-$arr[$i-1]; if($diff <-50 || $diff > 50) { } else { $fresharray[] = $lol; } $i++; }

Básicamente, estoy comparando el número actual con el número anterior y si la diferencia es más de 50, lo excluyo de mi matriz fresca, pero mi problema es cuando hay dos 0 como 0,0 o 300,301... aquí la diferencia es 0 y -1 y su siendo agregado a mi matriz fresca. ¿Cómo elimino estos números impares de mi matriz de precios? Tenga en cuenta que el tamaño de mi matriz suele ser más de 1000. La solución puede ser en php o javascript. Gracias.

tenga en cuenta que el precio puede comenzar desde 200 y terminar en 400 también ... pero solo quiero verificar el número actual para el cual es desigual.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

En primer lugar, dado que dice que hay un rango de precios, debe rodear el interior del foreach con un si que ignora los valores que están fuera de su rango, solucionando su problema donde un 0 hace que el siguiente valor se agregue a $fresharray :

 if ($lol >= 200 && $lol <= 400)

La definición de "último número" aquí es ambigua. Por lo que dijiste en la pregunta, parece que te refieres al número anterior en $arr. Para eso, solo necesita un valor al que se le asigne el valor de $lol al final del foreach, para que la próxima iteración pueda leerlo.

Además, pon $fresharray[] = $lol; dentro del if en lugar del else. En este momento, el código agrega $lol cuyo $diff no es <-50 ni >50. Esta es probablemente la razón por la que en una matriz que contiene [...,300,301,...] el 301 se agrega a $fresharray .

Este es el código resultante después de los cambios:

 <?php $arr = [200, 201, 203, 205, 207, 300, 209, 212, 0, 211, 0, 0, 301, 213, 214]; $fresharray = []; $latest = $arr[0]; //Initialize $latest to avoid warnings foreach ($arr as $lol) { if ($lol >= 200 && $lol <= 400) { //Ignore prices outside range $diff = $lol - $latest; if ($diff < -50 || $diff > 50) { $fresharray[] = $lol; } $latest = $lol; } }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda