Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

381
Views
¿Cuál es el equivalente php de Reduce en javascript para filtrar las entradas duplicadas en Array?

Estoy filtrando una matriz que tiene el mismo valor para la clave, por ejemplo, Javascript

 var sims = [{icon:"sim"},{icon:"airtime"},{icon:"sim"}] sims.reduce((a,v)=>{ var exists = a.some((i)=>{ return i.icon == v.icon }) if(!exists){ a.push(v); } return a },[])

Entonces, el código anterior funciona perfectamente bien y obtuve resultados Salida de código javascript

Pero no puedo hacer lo mismo en php. He usado la función php array_reduce pero no puedo entender su funcionamiento porque estoy más desconcertado con su sintaxis.

Esto es lo que probé Php

 <?php $cars = array(array("icon"=>'sim'),array("icon"=>'airtime'),array("icon"=>'sim')); $container = array(); $unique_types = array_unique(array_map(function($elem){return $elem['icon'];}, $cars)); echo json_encode($unique_types); ?>

Lo que me da salida

 ["sim","airtime"]

Me está dando elementos únicos que quiero pero no me devuelve el objeto completo como en Javascript. ¿Qué me estoy perdiendo?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Puede lograr esto de varias maneras, ya que su matriz nunca cambia, puede usar el indicador SORT_REGULAR para comparar elementos normalmente .

 // [{"icon":"sim"},{"icon":"airtime"}] echo json_encode(array_unique($cars, SORT_REGULAR));

Esto se menciona en la documentación bajo "BANDERAS".


Lo anterior solo comparará que toda la matriz es la misma . Si su matriz se hace más grande, es posible que desee que solo sea única en función de la clave del icon .

 // [{"icon":"sim"},{"icon":"airtime"}] echo json_encode(array_intersect_key($cars, array_unique(array_column($cars, 'icon'))));

Puede leer sobre array_column y array_intersect_key . Esencialmente, array_column está haciendo su lógica array_map , que luego lo único que faltaba es mapear esas claves nuevamente.

about 4 years ago · Juan Pablo Isaza Report

0

Muchas maneras de hacer esto, por ejemplo, intente esto:

 $cars = array( array("icon"=>'sim'), array("icon"=>'airtime'), array("icon"=>'sim')); echo json_encode(array_map("unserialize", array_unique(array_map("serialize", $cars))));

Consulte la documentación de estas funciones, las explicaciones son bastante sencillas. Espero que esto ayude.

about 4 years ago · Juan Pablo Isaza Report

0

En el lugar del agujero en el idioma donde debería estar array_uunique() [nuevamente, esto nunca se implementó], puede usar una peculiaridad de las matrices asociativas de PHP para hacer cumplir la unicidad.

 $cars = array(array("icon"=>'sim'),array("icon"=>'airtime'),array("icon"=>'sim')); // duplicate indexes are overwritten $index = array_flip(array_column($cars, 'icon')); $out = []; foreach($index as $i) { $out[] = $cars[$i]; } var_dump($out);

Producción:

 array(2) { [0]=> array(1) { ["icon"]=> string(3) "sim" } [1]=> array(1) { ["icon"]=> string(7) "airtime" } }

Árbitro:

  • https://www.php.net/manual/en/function.array-flip
  • https://www.php.net/manual/en/function.array-column.php
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!