ugrás a tartalomhoz

A tömb következő eleme.

qcy · 2003. Már. 2. (V), 13.30
Szevasztok!

A problémám a következő:

Van egy tömböm, aminek a következő elemét szeretném megkapni.
A foreach nem jó, mert a next() fgv. nem állítja az indexét.
while ( list( $kulcs, $ertek ) = each($tomb) ) meg nem a következőt
adja vissza hanem a következő utánit.
Valakinek valami ötlete van?

A forrás:

$tomb[] = 11;
$tomb[] = 22;
$tomb[] = 33;
$tomb[] = 44;
$tomb[] = 55;

foreach ( $tomb as $ertek)
{
print "$ertek<br>";
if ( $ertek == 22 )
{
print next($tomb)."<br>";
print next($tomb)."<br>";
}
print "----------------<br>";
}

kimenete:
11
----------------
22
22
33
----------------
33
----------------
44
----------------
55
----------------

Forrás2:

reset($tomb);
while ( list( $kulcs, $ertek ) = each($tomb) )
{
print "$ertek<br>";
if ( $ertek == 22 )
{
$ert = next($tomb);
$ert = prev($tomb);
print "$ert<br>";
}
print "----------------<br>";
}

kimenete:
11
----------------
22
33
----------------
33
----------------
44
----------------
55
----------------
 
1

Re: A tömb következő eleme.

pappi · 2003. Már. 31. (H), 16.45
amennyire én értem azt szeretnéd, hogy miközben végigmész egy tömbön, az aktuális és a következő értékre is kiváncsi vagy.

szerintem ennek jónak kell lennie:
reset($tomb);
while ( list( $kulcs, $ertek ) = each($tomb) )
{
print "$ertek<br>";
if ( $ertek == 22 )
{
print current($tomb) . "<br>";
}
print "----------------<br>";
}

ugyanis az each egyrészt visszaadja az aktuális értéket, utánna pedig lépteti eggyel a mutatót, ezért tűnt úgy hogy a next a következő utánit adja vissza. a foreach-nél viszont nem lépked a mutató a tömben az mindig oda mutat ahol volt.

ha sima vektor akkor még meg lehet csinálni for-ral és foreach-el is, csak akkor vigyázni kell, nehogy olyan indexet adj meg ami már nincs.

for ( $i; $i < sizeof( $tomb); $i++ ) {
print $tomb[$i];
if ( $i + 1 < sizeof( $tomb) ) {
print $tomb[$i+1];
}
}

vagy

foreach ( $tomb as $i=>$val) {
print $val;
//persze itt is kell az if
print $tomb[$i+1];
}

nyilván ez nem működik asszociatív tömbök esetén.