Java týden Předvánoční slevová akce
Využij předvánočních slev a získej od nás 20 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!

array_unique - Český PHP manuál

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Odstraní duplicitní hodnoty v poli. Ve výsledném poli se tedy každá hodnota vyskytuje nejvýše jednou. Klíče zůstanou zachovány. Prvky jsou vnitřně porovnávány jako stringy a pomocí operátoru ===.

Parametry

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Vstupní pole. Jako druhý nepovinný parametr můžeme uvést následující flagy:

  • SORT_REGULAR - Porovná prvky bez změny jejich typu.
  • SORT_NUMERIC - Porovná prvky numericky.
  • SORT_STRING - Porovná prvky jako textové řetězce.
  • SORT_LOCALE_STRING - Porovná prvky jako textové řetězce na základě místního nastavení.

Návratová hodnota

Pole s unikátními hodnotami.

Příklad

<?php
$pole = array(1, 2, 2, 2, 3, 1, 5, 2, 6, 9, 5);
$unikatni = array_unique($pole);

print_r($unikatni);

Výstup:

Array
(
    [0] => 1
    [1] => 2
    [4] => 3
    [6] => 5
    [8] => 6
    [9] => 9
)

 

 

Manuál pro vás napsal David Čápka
Avatar
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor sítě se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.
Všechny články v sekci
Pole - Český PHP manuál
Aktivity (1)

 

 

Komentáře

Avatar
Pepa
Neregistrovaný
Avatar
Pepa:25.9.2013 12:34

Je nějaká funkce která odebere prvek třeba na 9 místě v poli; mám pole o 15 prvků které jsou seřazeny podle nějakých klíčů. chci odebrat prvek s klíčem 10. Jak?

 
Odpovědět
25.9.2013 12:34
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Pepa
David Čápka:28.9.2013 11:20

Můžeš použít unset(), ale indexy ti zůstanou nezměněné.

Odpovědět
28.9.2013 11:20
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:28.9.2013 11:24

Však určitě potřebuje ponechat indexy. Vždyť pracuje s polem, u kterého se nic neposouvá. Kdyby posunout chtěl, použil by seznam.

Odpovědět
28.9.2013 11:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:28.9.2013 11:28

Tak potom takhle:

unset($pole[10]);
$pole = array_values($pole);
Odpovědět
28.9.2013 11:28
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:28.9.2013 11:28

Seznam a pole je přeci v PHP to samé a obojí je vlastně slovník :D

Odpovědět
28.9.2013 11:28
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:28.9.2013 11:42

Pokud s polem chci pracovat jako se seznamem, musím o něm mluvit jako o seznamu, i když je to stejný datový typ. Je nutné tomu podřídit i název proměnné, který nemá vliv na aplikaci, ale na programátora. Z hlediska jazyka tedy jsou tyto zápisy stejné:

$pole = array();
$seznam = array();

ale z hlediska sémantiky je první proměnnou pole a druhou je seznam. Pokud pak dělám přiřazení, tak se to bude také lišit:

$pole[$i] = $hodnota;
$seznam[] = $hodnota;

To první je přidání prvku do pole, to druhé je přidání prvku na konec seznamu. Při výpisu na výstup opět bude rozdíl

for ($i = 0; $i < sizeof($pole); $i++) {
    echo $pole[$i];
}

vs.

foreach ($seznam as $radek) {
    echo $radek;
}

Práce s polem a seznamem se prostě liší, i když se jedná o totožný datový typ.

Odpovědět
28.9.2013 11:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.