Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Odejmowanie elementów w tablicy
Krismen
post
Post #1





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 5.02.2009

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


Witam. Mam taką tablicę:

  1. (
  2. [5] => 2
  3. [7] => 5
  4. [11] => 9
  5. [15] => 12
  6. [19] => 16
  7. [22] => 20
  8. [25] => 30
  9. [28] => 42
  10. )


Klucze nie idą kolejno. Potrzebuję odjąć drugi element od pierwszego, trzeci od drugiego itd. Próbuję tak

foreach($tab as $key => $val)
{
echo $val;
$current=current($tab);
$next=next($tab);
echo "roznica= ".($next-$current)."<br />";
}

i otrzymuję:

2 roznica = 4
5 roznica = 3
9 roznica = 4
12 roznica = 4
16 roznica = 10
20 roznica = 12
30 roznica = -42
42 roznica = 0

Do szczęsci brakuje mi pierwszej różnicy czyli 5-2. Nie wiem czemu?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Pewnie dlatego, ze po pierwszym odpaleniu foreach current wskazuje juz na nastepny element w kolejce
Go to the top of the page
+Quote Post
Krismen
post
Post #3





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 5.02.2009

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


Faktycznie teraz sprawdziłem, w pętali foreach current to nie pierwszy tylko drugi element. Co ciekawe w pętli for current jest pierwszy, tylko że do tej tablicy nie mogę użyć for. W taki razie jak by to można było zrobić?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




FOR nie ingeruje w tablice, FOREACH tak, stad tez inne zachowanie...

Jak to poprawic? No przeciez to logincze.... $val to twoje current, a current to next. Nad czym tu myslec?
Go to the top of the page
+Quote Post
mar1aczi
post
Post #5





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

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


foreach
  1. foreach($a as $k => $v) {
  2. echo current($a) - $v . "; ";
  3. next($a);
  4. }
Wyświetla się jednak nadmiarowo ostatni element :|

for
  1. $k = array_keys($a);
  2. for($i = 1; $i < count($a); $i++) {
  3. echo $a[$k[$i]] - $a[$k[$i-1]] . "<br/>";
  4. }
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 18:26