Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sprawdzenie czy poprzedni element tablicy równy bieżącemu
arzach
post
Post #1





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

Ostrzeżenie: (0%)
-----


Witam mam taką tablice
Kod
Array
(
    [0] => Array
        (
            [pkt] => 6
            [zdobyte] => 9
        )

    [1] => Array
        (
            [pkt] => 6
            [zdobyte] => 10
        )

    [2] => Array
        (
            [pkt] => 4
            [zdobyte] => 5
        )

    [3] => Array
        (
            [pkt] => 3
            [zdobyte] => 6
        )
)

i jak sprawdzić czy bieżący element jest równy poprzedniemu próbowałem to zrobić tak i nie działa
  1. $lp1 = 1;
  2. foreach ($wyniki AS $klucz => $wiersz) {
  3. if(!$lp1 == 1){
  4. $index = $lp1-1;
  5. if($wiersz['pkt'] == $wyniki[$index]['pkt'] && $wiersz['zdobyte'] == $wyniki[$index]['zdobyte']){ echo 'tak'; }
  6. }
  7. $lp1++;
  8. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nie używaj lpl bo jest Ci niepotrzebna. Użyj $klucz i powinno być ok.


--------------------
Go to the top of the page
+Quote Post
arzach
post
Post #3





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

Ostrzeżenie: (0%)
-----


No tak, ale $klucz zwraca bieżący klucz a jak zrobię tak to i tak nie działa
  1. if($klucz !== 0 && $klucz !== 1){
  2.  
  3. if($wiersz['pkt'] == $wyniki[$klucz - 1]['pkt'] && $wiersz['zdobyte'] == $wyniki[$klucz - 1]['zdobyte']){ echo 'tak'; }
  4.  
  5.  
  6. }


Nie działa tak jak chciałem bo za każdym razem wychodzi że dwa pierwsze elementy są takie same co jest nie możliwe.

Ma to działać tak że z pomięciem pierwszego elementu. Każdy następny ma sprawdzać czy jest równy poprzedniemu czyli gdy element drugi jest równy pierwszemu gdy element trzeci jest równy drugiemu i itd

Ten post edytował arzach 23.08.2010, 09:23:09
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Wookieb ma pewnie na myśli pewne rozwiązanie, które wyemituje warninga na koniec, ale chodzi mu chyba o coś w stylu:
  1. foreach ($wyniki AS $klucz => $wiersz) {
  2. if($wiersz['pkt'] == $wyniki[$klucz+1]['pkt'] ) {
  3. echo 'Wpisy pod indeksami kluczy: '.$klucz.' oraz '.($klucz+1).' mają po '.$wiersz['pkt'].' punktów i są sobie równe.';
  4. }
  5. }
Poza tym zawsze możesz zrobić jeszcze coś innego... Pierwszy element tablicy "ominąć" używając continue; i porównywać element obecny do poprzedniego ($klucz-1) lub to samo dla ostatniego i wtedy ($klucz+1) jak w przykładzie wyżej. Warunek używający continue robisz przed pętlą sprawdzającą równość elementów sąsiednich.

EDIT: Oczywiście przyjmujemy, że nie ma luk w numeracji kluczy. Od 0 do jakiejś tam liczby bez "dziur". Bez tego musielibyśmy kombinować z iteratorami tablicowymi.
Powód edycji: [thek]: Mala uwaga


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 13:44