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

230
Views
Cómo eliminar una matriz de valor clave duplicada en una matriz multidimensional

Tengo esta matriz. Quiero eliminar la matriz si su valor es el mismo que el de los demás.

 $appointments = array( array('1','Monday', '5:30 PM'), array('2','Friday', '6:00 PM'), array('3','Monday', '5:30 PM'), array('4','Tuesday', '4:15 PM'), array('5','Wednesday', '8:30 PM'), array('6','Thursday', '1:45 PM') );

Quiero este resultado el lunes y la hora se muestra dos veces, así que tengo que mostrar solo una vez. Uso el siguiente código para esto, así que proporcione una mejor solución para esto.

 $one_dimension = array_map('serialize', $appointments); $unique_one_dimension = array_unique($one_dimension); $unique_multi_dimension = array_map('unserialize', $unique_one_dimension); echo "<pre>";print_r($unique_multi_dimension);
about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Demostración de código PHP

 <?php $appointments = array( array('1','Monday', '5:30 PM'), array('2','Friday', '6:00 PM'), array('3','Monday', '5:30 PM'), array('4','Tuesday', '4:15 PM'), array('5','Wednesday', '8:30 PM'), array('6','Thursday', '1:45 PM') ); //Here we are finding column of week days. $implodedColumns= array_map(function($data){ unset($data[0]); return implode(",", array_map('trim', $data)); }, $appointments); $result=array_unique($implodedColumns); array_walk($result, function(&$value,$key){ $value= array_merge(array($key), explode(",", $value)); }); print_r($result);

Producción:

 Array ( [0] => Array ( [0] => 0 [1] => Monday [2] => 5:30 PM ) [1] => Array ( [0] => 1 [1] => Friday [2] => 6:00 PM ) [3] => Array ( [0] => 3 [1] => Tuesday [2] => 4:15 PM ) [4] => Array ( [0] => 4 [1] => Wednesday [2] => 8:30 PM ) [5] => Array ( [0] => 5 [1] => Thursday [2] => 1:45 PM ) )
about 4 years ago · Santiago Trujillo Report

0

$one_dimension = array_map('serialize', $appointments); $unique_one_dimension = array_unique($one_dimension); $unique_multi_dimension[1] = array_map('unserialize', $unique_one_dimension); echo "<pre>";print_r($unique_multi_dimension);die;
about 4 years ago · Santiago Trujillo Report

0

Solución de clonación genérica O(n^2) estándar:

 function array_unique_callback($array, $equalityComparer) { $uniqueFiltered = []; $keys = array_keys($array); for ($i = 0;$i < count($array);$i++) { $add = true; for ($j = 0;$j < $i;$j++) { if ($equalityComparer($array[$keys[$i]], $array[$keys[$j]])) { $add = false; break; } } if ($add) { $uniqueFiltered[] = $array[$keys[$i]]; } } return $uniqueFiltered; } array_unique_callback($appointments, function ($x,$y) { return $x[1] == $y[1] && $x[2] == $y[2]; });

Ejemplo: http://sandbox.onlinephpfunctions.com/code/8013c36b78d24f08651b05375d686c9e07c75a49

Si quieres una versión más optimizada:

 function array_unique_callback($array, $comparer) { //Comparer is not an equality comparer, it returns negative if $x less than $y, 0 if they are equal and 1 if $x greater than $y $keys = array_keys($array); uasort($array, $comparer); $uniqueFiltered = []; for ($i = 0;$i < count($array);$i++) { $uniqueFiltered[$keys[$i]] = $array[$keys[$i]]; while ($i < count($array) && $comparer($array[$keys[$i]],$array[$keys[$i+1]]) === 0) { $i++; } } return $uniqueFiltered; }

Sin embargo, la segunda versión necesita que decidas una forma de comparar y ordenar cada elemento (lo que no siempre es posible).

about 4 years ago · Santiago Trujillo 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!