In acest tutorial puteti invata cum sa
stergeti, sau sa obtineti valorile duplicate dintr-un array, si cum sa resetati cheile din array in PHP.
Sterge valori duplicate din Array
Pentru a sterge valorile duplicate dintr-un array, se foloseste functia PHP:
array_unique(). Aceasta functie returneaza array-ul fara valorile duplicate, si fara sa modifice cheile.
Exemplu:
<?php
// valori duble: 1, mp
$aray = array(1, 'abc', 1, 'mp', 33, 'mp', 8);
$aray = array_unique($aray);
// test
print_r($aray); // Array ( [0] => 1 [1] => abc [3] => mp [4] => 33 [6] => 8 )
?>
Functia array_unique() trateaza valorile ca siruri, astfel, daca un array contine de exemplu: 12 (numar), si '12' (sir), functia va pastra prima valoare.
Exemplu:
<?php
// valori duble: 12, mp
$aray = array(12, 'abc', '12', 'mp', 33, 'mp');
$aray = array_unique($aray);
// test
print_r($aray); // Array ( [0] => 12 [1] => abc [3] => mp [4] => 33 )
?>
Obtine elementele duplicate din Array
Ca sa obtineti numai elementele duplicate dintr-un array, se poate folosi aceasta constructie:
array_unique(array_diff_assoc($aray, array_unique($aray)));
Exemplu:
<?php
// valori duble: 12, mp
$aray = array(12, 'abc', '12', 'mp', 33, 'mp', 8);
$duplicates = array_unique(array_diff_assoc($aray, array_unique($aray)));
// test
print_r($duplicates); // Array ( [2] => 12 [5] => mp )
?>
Resetare chei array
PHP nu are o fnctie speciala pentru a reseta cheile unui array, dar se poate folosi alta functie pentru a obtine acest rezultat.
Ca sa resetati (sau sa renumarati) cheile unui array puteti utiliza functia
array_merge(). Aceasta functie uneste unul sau mai multe array impreuna. Valorile din array-urile cu chei numerice vor fi renumarate in array-ul rezultat, incepand cu zero.
Astfel, daca adaugati un singur array cu chei numerice neordonate, va returna un array cu cheile ordonate, incepand cu 0, iar valorile raman in aceeasi ordine.
Exemplu:
<?php
$aray = array(1=>'abc', 5=>23, 12=>'mp');
$aray = array_merge($aray);
// test
print_r($aray); // Array ( [0] => abc [1] => 23 [2] => mp )
?>