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

229
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 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