• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Keyposition in assoziativem Array

Tronjer

Senior HTML'ler
Ich möchte HTML-Tags abwechselnd mit den CSS-Klassen 'even' und 'odd' belegen, ohne jQuery oder Pseudoklassen wie :nth-child() zu verwenden. Bei einem einfachen Array kann ich dazu auf den Index der Elemente zurückgreifen :

PHP:
<? $foo = ['eins', 'zwei', 'drei', 'vier', 'fuenf'];


foreach ( $foo as $index => $bar):

    $class = (1 == $index % 2) ? 'even' : 'odd'; ?>

    <p class="<? echo $class; ?>"><? echo $bar; ?> </p>

<? endforeach;?>

Aber wie mache ich das in einem assoziativen Array, mit einem key => value pair?

PHP:
$foo = [
    'key' => 'eins',
    'key' => 'zwei',
    'key' => 'drei',
    'key' => 'vier',
    'key' => 'fuenf'
];
 
ich lasse bei foreach über assoziative arrays einen zähler mitlaufen. alternativ gibt es auch einen array pointer. die funktion next() kann dafür genutzt werden.
PHP:
for($i=0;$i<count($foo);$i++)
{
echo next($foo);
}
 
Oder um beim ursprünglichen Beispiel zu bleiben:
PHP:
<?php
$even = true;
foreach ( $foo as $index => $bar):
    $class = $even ? 'even' : 'odd';
    $even = !$even ?>
    <p class="<? echo $class; ?>"><? echo $bar; ?> </p>

<? endforeach;?>
Nur eine Zeile länger.
 
Zurück
Oben