Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Nieoczekiwane działanie array_unique()
Forum PHP.pl > Forum > PHP
Bejkrools
Hej, mam problem z działaniem array_unique, z resztą sami zobaczcie:

  1. $zapytanie = mysql_query("SELECT promocja FROM umowy_promocje");
  2. if(mysql_num_rows($zapytanie) > 0)
  3. {
  4. $x=1;
  5. while($u = mysql_fetch_assoc($zapytanie))
  6. {
  7. $cala_nazwa_promocji[$x] = explode("-",$u['promocja']);
  8. $x = $x+1;
  9. }
  10. }


Bo niektóre z promocji składają się z dwóch członów, oddzielonych "-". A ja potrzebuję tylko pierwszy człon w tej części kodu wiec w ten sposób tworzę tablice która zawiera tyko pierwszy człon promocji.

  1. $n = count($cala_nazwa_promocji);
  2. for ($i=1; $i<$n; $i++)
  3. {
  4. $nazwa_promocji_part1[$i] = $cala_nazwa_promocji[$i][0];
  5. }
  6. $unique_nazwa_promocji_part1 = array_values(array_unique($nazwa_promocji_part1));


No i tu zaczynają się klopoty, bo przykładowy wynik to:

$cala_nazwa_promocji
Array
(
[1] => Array
(
[0] => Promocja Lato
)

[2] => Array
(
[0] => Promocja Zima
)
)

$nazwa_promocji_part1
Array
(
[1] => Promocja Lato
)

$unique_nazwa_promocji_part1
Array
(
[0] => Promocja Lato
)

Działanie tej funkcji rozumiem tak, że wybiera pierwszy z elementów, które się powtarzają.

Dla tablicy składającej się z elementów: LATO, ZIMA, LATO, ZIMA, JESIEN, JESIEN, ZIMA, WIOSNA po operacji array_unique w nowej tablicy zostało: LATO, ZIMA, JESIEN. Wiosna została jakby usunięta. Co jest przyczyną? Czy robię coś źle?
sowiq
Cytat(Bejkrools @ 28.01.2014, 14:03:59 ) *
Co jest przyczyną? Czy robię coś źle?

Trudno żebyś otrzymał poprawny wynik, jak do funkcji przekazujesz złe dane wink.gif

  1. $n = count($cala_nazwa_promocji); // <-- to zwraca rozmiar tablicy, czyli w Twoim przypadku "2"
  2. for ($i=1; $i < $n; $i++) // <-- ta pętla wykona tylko jedną iterację, bo zaczynasz na "1", dodajesz "1" i od razu kończysz, bo $i nie jest mniejsze niż $n (czyli 2). Powinno być w warunku "<="
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.