¿Cómo puedo eliminar los valores duplicados de una matriz en PHP?Cómo eliminar valores duplicados de una matriz en PHP
Respuesta
Use array_unique().
Ejemplo:
$array = array(1, 2, 2, 3);
$array = array_unique($array); // Array is now (1, 2, 3)
I haber hecho esto sin el uso de cualquier función.
$arr = array("1", "2", "3", "4", "5", "4", "2", "1");
$len = count($arr);
for ($i = 0; $i < $len; $i++) {
$temp = $arr[$i];
$j = $i;
for ($k = 0; $k < $len; $k++) {
if ($k != $j) {
if ($temp == $arr[$k]) {
echo $temp."<br>";
$arr[$k]=" ";
}
}
}
}
for ($i = 0; $i < $len; $i++) {
echo $arr[$i] . " <br><br>";
}
explode(",", implode(",", array_unique(explode(",", $YOUR_ARRAY))));
Esto se hará cargo de las asociaciones clave y serializar las claves para la nueva matriz resultante :-)
¿Cuál sería el efecto de 'explotar (", "$ YOUR_ARRAY)' cuando '$ YOUR_ARRAY' es 'array (" 1 "," 2 "," 3 ")'? – kiamlaluno
@kiamlaluno - :) y la respuesta es: ** Advertencia: explotar() espera que el parámetro 2 sea una cadena, una matriz dada en ... en línea ... ** –
@JesseChisholm Sí, este era el punto, pero nadie notó el código, aparentemente. – kiamlaluno
$array = array("Ram","Thiru","Ram","Thiraviya");
$array = array_unique($array);
Salida:
"Ram", "Thiru", "Thiraviya"
Este es un duplicado completamente inútil de la respuesta aceptada de * 2008 *. –
veces array_unique()
no es el camino, si desea obtener artículos únicos y duplicados ...
$unique=array("","A1","","A2","","A1","");
$duplicated=array();
foreach($unique as $k=>$v) {
if(($kt=array_search($v,$unique))!==false and $k!=$kt)
{ unset($unique[$kt]); $duplicated[]=$v; }
}
sort($unique); // optional
sort($duplicated); // optional
resultados en
array (0 => '', 1 => 'A1', 2 => 'A2',) /* $unique */
array (0 => '', 1 => '', 2 => '', 3 => 'A1',) /* $duplicated */
$arrDuplicate = array ("","",1,3,"",5);
foreach(array_unique($arrDuplicate) as $v){
if($v != ""){$arrRemoved = $v; }}
print_r($arrRemoved);
Chicos esta sería una forma más inteligente de eliminar duplicados .......... – user1045247
Esto realmente no explica nada, y no parece ser "más inteligente". – Sven
Siempre puede explicar por qué editando su propia publicación, simplemente haga clic en el enlace "editar" al final de su respuesta. También sugiero que eche un vistazo a las preguntas frecuentes: http://stackoverflow.com/faq – ForceMagic
//Find duplicates
$arr = array(
'unique',
'duplicate',
'distinct',
'justone',
'three3',
'duplicate',
'three3',
'three3',
'onlyone'
);
$unique = array_unique($arr);
$dupes = array_diff_key($arr, $unique);
// array(5=>'duplicate', 6=>'three3' 7=>'three3')
// count duplicates
array_count_values($dupes); // array('duplicate'=>1, 'three3'=>2)
Eso es una gran manera de para hacerlo. Puede que quieras asegurarte de que su salida vuelva a ser una matriz. Ahora solo muestra el último valor único.
Prueba esto:
$arrDuplicate = array ("","",1,3,"",5);
foreach (array_unique($arrDuplicate) as $v){
if($v != "") { $arrRemoved[] = $v; }
}
print_r ($arrRemoved);
function arrayUnique($myArray)
{
$newArray = Array();
if (is_array($myArray))
{
foreach($myArray as $key=>$val)
{
if (is_array($val))
{
$val2 = arrayUnique($val);
}
else
{
$val2 = $val;
$newArray=array_unique($myArray);
$newArray=deleteEmpty($newArray);
break;
}
if (!empty($val2))
{
$newArray[$key] = $val2;
}
}
}
return ($newArray);
}
function deleteEmpty($myArray)
{
$retArray= Array();
foreach($myArray as $key=>$val)
{
if (($key<>"") && ($val<>""))
{
$retArray[$key] = $val;
}
}
return $retArray;
}
tratar este breve & dulce código -
$array = array (1,4,2,1,7,4,9,7,5,9);
$unique = array();
foreach($array as $v){
isset($k[$v]) || ($k[$v]=1) && $unique[] = $v;
}
var_dump($unique);
salida -
array(6) {
[0]=>
int(1)
[1]=>
int(4)
[2]=>
int(2)
[3]=>
int(7)
[4]=>
int(9)
[5]=>
int(5)
}
¿Puede explicarme cómo funciona este código? –
Abusar operadores booleanos para un flujo de control como este es innecesariamente confuso. Solo usa 'si'. –
i t se puede hacer a través de la función hice tres funciones duplicadas devuelve los valores que están duplicados en la matriz. segunda función única devuelve solo aquellos valores que son de media simple no repetida en matriz y tercera y función completa devuelve todos los valores pero no duplicados si hay algún valor duplican que convertirlo a singularizar
function duplicate($arr){
$duplicate;
$count=array_count_values($arr);
foreach($arr as $key=>$value){
if($count[$value]>1){
$duplicate[$value]=$value;
}
}
return $duplicate;
}
function single($arr){
$single;
$count=array_count_values($arr);
foreach($arr as $key=>$value){
if($count[$value]==1){
$single[$value]=$value;
}
}
return $single;
}
function full($arr,$arry){
$full=$arr+$arry;
sort($full);
return $full;
}
}
Dependiendo del tamaño de la matriz, he encontrado
$array = array_values(array_flip(array_flip($array)));
puede ser más rápido que array_unique.
Más información sobre lo que está sucediendo aquí y sería más rápido con una matriz más grande o más pequeña. –
La doble inversión eliminará los valores duplicados, porque una clave no puede existir dos veces; de lo contrario, se sobrescribe. Si cualquier valor se duplica y la matriz se invierte, la última ocurrencia (supongo) será el valor de la clave. – Goldentoa11
En PHP 7, he notado que al voltear una matriz multidimensional más de una vez se pueden reordenar los elementos de la matriz inesperadamente. –
Lo único que funcionó para mí es:
$array = array_unique($array, SORT_REGULAR);
La función array_unique lo hará por ti. Usted sólo necesita añadir la bandera SORT_REGULAR:
$items_thread = array_unique($items_thread, SORT_REGULAR);
<?php
$arr1 = [1,1,2,3,4,5,6,3,1,3,5,3,20];
print_r(arr_unique($arr1));
function arr_unique($arr) {
sort($arr);
$curr = $arr[0];
$uni_arr[] = $arr[0];
for($i=0; $i<count($arr);$i++){
if($curr != $arr[$i]) {
$uni_arr[] = $arr[$i];
$curr = $arr[$i];
}
}
return $uni_arr;
}
Uso array_values(array_unique($array));
array_unique
: para la gama única array_values
: para la indexación
if (@!in_array($classified->category,$arr)){
$arr[] = $classified->category;
?>
<?php } endwhile; wp_reset_query(); ?>
primer valor de comprobación de vez en matriz y encontrado mismo valor ignórelo
Podemos crear este tipo de matriz a utilizar este último valor se actualizará en la columna o valor clave y vamos a obtener un valor único de la matriz ...
$array = array (1,3,4,2,1,7,4,9,7,5,9);
$data=array();
foreach($array as $value){
$data[$value]= $value;
}
array_keys($data);
OR
array_values($data);
Para quitar el valor duplicado de la matriz se puede utilizar Función array_unique ($ tu_array) de PHP
Eliminar los valores duplicados de una matriz asociativa en PHP.
$arrDup = Array ('0' => 'aaa-aaa' , 'SKU' => 'aaa-aaa' , '1' => '12/1/1' , 'date' => '12/1/1' , '2' => '1.15' , 'cost' => '1.15');
foreach($arrDup as $k => $v){
if(!(isset ($hold[$v])))
$hold[$v]=1;
else
unset($arrDup[$k]);
}
Array ([0] => aaa-aaa [1] => 12/1/1 [2] => 1,15)
$result = array();
foreach ($array as $key => $value){
if(!in_array($value, $result))
$result[$key]=$value;
}
- 1. PHP - Los valores duplicados de una matriz
- 2. PHP Eliminar duplicados de una matriz
- 3. PHP eliminar valores duplicados de la matriz multidimensional
- 4. ¿Cómo detectar valores duplicados en una matriz de PHP?
- 5. ¿Cómo eliminar valores de una matriz en PHP?
- 6. PHP - Cómo comparar dos matrices y eliminar valores duplicados
- 7. Java ¿Quieres eliminar duplicados de una matriz?
- 8. Ordenar matrices PHP basadas en valores duplicados
- 9. Eliminación de valores duplicados de una matriz de PowerShell
- 10. php - elementos de la eliminación de una matriz que tener valores duplicados en una clave especificada
- 11. php: comprueba si una matriz tiene duplicados
- 12. Eliminar duplicados de una matriz de enteros grandes utilizando Java
- 13. Cómo eliminar todas las instancias de valores duplicados de una matriz
- 14. Eliminar valores cero a partir de una matriz PHP
- 15. ¿Cómo puedo eliminar TODOS los duplicados de una matriz en PHP?
- 16. ¿Cómo buscar una matriz para valores múltiples en PHP?
- 17. Eliminar claves con valores falsos de la matriz en PHP
- 18. matrices de combinación PHP con solo valores NO DUPLICADOS
- 19. Obtener las claves para valores duplicados en una matriz
- 20. Eliminar valores nan de una matriz
- 21. C#: ¿Eliminar valores duplicados del diccionario?
- 22. VBA, eliminar duplicados de la matriz
- 23. php obtener valores únicos de una matriz multidimensional
- 24. Cómo eliminar valores cero de una matriz en paralelo
- 25. cómo eliminar cadenas vacías de la lista, luego eliminar valores duplicados de una lista
- 26. Eliminar duplicados de una tabla
- 27. Mostrar valores de matriz en PHP
- 28. ¿Cómo eliminar duplicados de una lista en Clojure?
- 29. Eliminar elementos duplicados de la matriz en Ruby
- 30. ¿Cómo eliminar una variable de una matriz sesión de PHP
@Ian - 'Tenga en cuenta que array_unique() es no destinado a funcionar en matrices multidimensionales. –
Lo anterior conservará las claves de los elementos. Si quiere que se vuelvan a indexar, también aplique array_values: http://www.php.net/manual/en/function.array-values.php – CodeVirtuoso
perfect ....... 'array_values (array_unique ($ array))) 'hace lo perfecto para mí. Gracias @Freelancer –