Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]foreach i next()
qbas-s
post 22.01.2015, 09:48:09
Post #1





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

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


załóżmy, że mam taką tablicę:
  1. $array = array('a','b','c','d','e','f');


po przepuszczeniu jej przez foreach chciałbym uzyskać:

aktualna wartość:a ,następna wartość: b
aktualna wartość:c ,następna wartość: d
aktualna wartość:e ,następna wartość: f

Aktualny kod którym się posługuję

  1. foreach($array as $key => $value){
  2. echo "aktualna wartość:$value ";
  3. if(isset($array[$key+1])){
  4. echo 'następna wartość:'.next($array);
  5. }
  6.  
  7. }


ale on działa źle gdyż rezultat jest taki:

aktualna wartość:a ,następna wartość:b
aktualna wartość:b ,następna wartość:c
aktualna wartość:c ,następna wartość: d
aktualna wartość: d ,następna wartość:e
aktualna wartość:e ,następna wartość:f

mój problem rozwiązałaby funkcja która:
1. pobiera następną wartość
2. ustawia licznik foreach na ten po next()

Ten post edytował qbas-s 22.01.2015, 10:28:20
Go to the top of the page
+Quote Post
Jarma
post 22.01.2015, 10:31:13
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 11
Dołączył: 20.07.2009

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


na początku foreacha

  1. if($key%2==1) continue;
Go to the top of the page
+Quote Post
qbas-s
post 22.01.2015, 10:45:33
Post #3





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

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


sprawdziłem i kod zwraca takie pary(aktualnie w tablicy mam 5 elementów):

aktualna:a następna:b
aktualna:c następna:c // d jest ominięte bo wynik dzielenia to 1 więc continue - jak to rozwiązać?
aktualna:e

Ten post edytował qbas-s 22.01.2015, 10:48:23
Go to the top of the page
+Quote Post
strife
post 22.01.2015, 10:47:12
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


  1. $array = array('a', 'b', 'c', 'd', 'e', 'f');
  2.  
  3. for ($i = 0; $i < count($array); $i++) {
  4. if ($i % 2 == 0) {
  5. echo "aktualna wartość: " . $array[$i] . ", ";
  6. }
  7.  
  8. if ($i % 2 != 0) {
  9. echo 'następna wartość: '. $array[$i] . "\n";
  10. }
  11.  
  12. }


Enjoy cool.gif


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 22.01.2015, 10:57:23
Post #5





Grupa: Zarejestrowani
Postów: 7 821
Pomógł: 1375
Dołączył: 26.10.2005

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


@up a jak klucze nie będą numeryczne wink.gif
  1. <?php
  2.  
  3. $array = array('a','b','c','d','e','f');
  4.  
  5. while(list($key, $value) = each($array))
  6. {
  7. echo "aktualna wartość:$value, ";
  8.  
  9. list($key2, $val2) = each($array);
  10. if($val2)
  11. {
  12. echo "aktualna wartość:$val2 ".PHP_EOL;
  13. }
  14. }


Ten post edytował Pyton_000 22.01.2015, 10:57:47
Go to the top of the page
+Quote Post
qbas-s
post 22.01.2015, 11:51:12
Post #6





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

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


Pyton_000 działa - dokładnie o to mi chodziło. Skrypt strife też działa ale nie dokładnie tak jak chciałem - w jednym powtórzeniu zwracał albo current albo next a mi zależy na jednym i drugim.

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 Wersja Lo-Fi Aktualny czas: 9.12.2019 - 13:59