Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wielki problem z array_unique
Forum PHP.pl > Forum > Przedszkole
Gość
Witam!

Mam w tabeli kolumnę, w której znajdują się dane oddzielone przecinkami, np. Polska, Niemcy.

W wielu wierszach, zarówno Polska, jak i Niemcy, się powtarzają.

  1. <?php
  2. $genere = $row['genere'];
  3. $array = explode(", ", $genere);
  4. $array = array_unique($array);
  5.            foreach ($array AS $name) {
  6.            echo $name;
  7.            }
  8. ?>


Mimo zastosowania $array_unique w tablicy w dalszym ciągu powtarzają się dane. Można to jakość obejść?
JoShiMa
Widać te stringi nie są identyczne. Być może różnią się jakimiś pustymi znakami na początku lub końcu stringu (może przepuść przez trim()), albo wielkością liter. Z pewnością nie są identyczne.
Gość
Chyba nie o to chodzi. Bo jak ustawię stringi, to też mi nie idzie:)

  1. <?php
  2. $array = array('Heavy, Heavy, Metal');
  3. $array = array_unique($array);
  4.            foreach ($array AS $name) {
  5.            echo $name;
  6.            }
  7. ?>
wookieb
zrob sobie
Kod
var_dump($array);

i pewnie zauwazysz ze niektore nazwy maja jakies puste znaki za i przed wlasciwym ciagiem.
Rozwiazaniem bedzie zastosowanie tego kodu przed array_unique.
Kod
$array=array_map('trim', $array);
Gość
Cytat(wookieb @ 10.10.2008, 15:02:36 ) *
zrob sobie
Kod
var_dump($array);

i pewnie zauwazysz ze niektore nazwy maja jakies puste znaki za i przed wlasciwym ciagiem.
Rozwiazaniem bedzie zastosowanie tego kodu przed array_unique.
Kod
$array=array_map('trim', $array);


Zaraz mnie pewnie zlinczujesz, ale są takie same. Spójrz z resztą:
  1. <?php
  2. array(2) { [0]=>  string(11) "Alternative" [1]=>  string(5) "Heavy" } array(2) { [0]=>  string(11) "Alternative" [1]=>  string(5) "Heavy" } array(1) { [0]=>  string(5) "Death" } array(2) { [0]=>  string(5) "Death" [1]=>  string(5) "Black" } array(2) { [0]=>  string(5) "Death" [1]=>  string(5) "Black" } array(2) { [0]=>  string(5) "Death" [1]=>  string(11) "Progressive" } array(2) { [0]=>  string(5) "Death" [1]=>  string(11) "Progressive" } array(1) { [0]=>  string(4) "Doom" } array(1) { [0]=>  string(9) "Folk Rock" } array(1) { [0]=>  string(4) "Glam" } array(1) { [0]=>  string(6) "Gothic" } array(3) { [0]=>  string(6) "Gothic" [1]=>  string(5) "Death" [2]=>  string(4) "Doom" } array(3) { [0]=>  string(6) "Gothic" [1]=>  string(5) "Death" [2]=>  string(4) "Doom" } array(3) { [0]=>  string(6) "Gothic" [1]=>  string(5) "Death" [2]=>  string(4) "Doom" } array(1) { [0]=>  string(9) "Hard Rock" } array(2) { [0]=>  string(9) "Hard Rock" [1]=>  string(5) "Heavy" } array(2) { [0]=>  string(9) "Hard
  3. ?>
drPayton
Twoja tablica musi być "płaska" żeby array_unique mogło zadziałac w ten sposób, np:

$array = array('cos', 'cosinnego', 'cos', 'cos', 'foo', 'bar'); - zrób tu array_unique i zobaczysz że zadziała winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.