array_unique nefunguje

Programovacie jazyky, rady, poradňa...
Shakal
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 206
Registrovaný: 31 jan 2006, 18:54

array_unique nefunguje

Príspevok od používateľa Shakal »

Caute.

Ja neviem co robim/nerobim zle ale akosika neviem prist na dovod, preco mi nefunguje array_unique.

FORMULAR.HTML

Kód: Vybrať všetko

<form action="skript.php" method="post">
<textarea name="pole" cols="60" rows="10"></textarea>
<input type="submit" value="odoslat">
</form>
SKRIPT.PHP

Kód: Vybrať všetko

<?
if (isset($_POST["pole"])) {
  $polia=explode("\n",$_POST["pole"]);
  print_r (array_unique($polia));
}
?>
Ked formular (textareu) zaplnim napriklad 4 riadkami:

Kód: Vybrať všetko

miso
juro
peter
miso
TAK VZDY MI TO VRATI VSETKY 4 RIADKY.
A PRITOM array_unique by mi mal vratit pole bez duplicitneho zaznamu (v tomto pripade len jedno meno - miso).

Pritom, ak pouzijem:

Kód: Vybrať všetko

<?
  $polia=array('miso','juro','peter','miso');
  print_r (array_unique($polia));
?>
-- tak toto funguje bez problemov.

PRECOOOOO MI TO NEJDE CEZ $_POST PROSIM?
:( :(
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Predpokladám, že po tom poslednom mene miso si nestlačil Enter (takže to je iný reťazec, ako to prvé meno miso). Skús napr.

Kód: Vybrať všetko

<?php
 if (isset($_POST["pole"])) {.
   $polia=explode("\n",$_POST["pole"]);.
   foreach ($polia as $meno) echo "'$meno'<br>\n";
 }.
 ?>
(a po zobrazení výsledku si pozri zdrojový kód tej stránky)

PS: Keby si namiesto print_r použil var_dump, tak by si tam ten rozdiel videl aj bez toho vypisovania jednotlivých prvkov toho poľa.
Shakal
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 206
Registrovaný: 31 jan 2006, 18:54

Príspevok od používateľa Shakal »

Dooo prdele.
Mas pravdu. Je to tak!

pffff. Neda sa to nejako jednoducho osetrit v celej tej array premennej a zmazat ten "iny" znak?

Nerad to komplikujem tym foreachom.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

V tom explode použi "\r\n". Inak nejakému prechádzaniu poľa a upravovaniu prvkov sa (podľa mňa) aj tak nevyhneš. Ak by si tam niekde zadal napr. medzeru navyše, zase by ti to nefungovalo (takže ideálne by asi bolo prejsť to pole a použiť funkciu trim, prípadne urobiť ďalšie testy).
Napísať odpoveď