Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [PHP]foreach i next()

Napisany przez: qbas-s 22.01.2015, 09:48:09

załóżmy, że mam taką tablicę:

  1. $array = http://www.php.net/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. http://www.php.net/echo "aktualna wartość:$value ";
  3. if(http://www.php.net/isset($array[$key+1])){
  4. http://www.php.net/echo 'następna wartość:'.http://www.php.net/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()

Napisany przez: Jarma 22.01.2015, 10:31:13

na początku foreacha

  1. if($key%2==1) continue;

Napisany przez: qbas-s 22.01.2015, 10:45:33

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

Napisany przez: strife 22.01.2015, 10:47:12

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


Enjoy cool.gif

Napisany przez: Pyton_000 22.01.2015, 10:57:23

@up a jak klucze nie będą numeryczne wink.gif

  1. <?php
  2.  
  3. $array = http://www.php.net/array('a','b','c','d','e','f');
  4.  
  5. while(list($key, $value) = http://www.php.net/each($array))
  6. {
  7. http://www.php.net/echo "aktualna wartość:$value, ";
  8.  
  9. list($key2, $val2) = http://www.php.net/each($array);
  10. if($val2)
  11. {
  12. http://www.php.net/echo "aktualna wartość:$val2 ".PHP_EOL;
  13. }
  14. }

Napisany przez: qbas-s 22.01.2015, 11:51:12

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.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)