Ich habe einen Block von PHP Code, der folgendermaßen aussieht:
$flag = false;
if (empty($links))
{
echo '<h1>You have no uploaded images</h1><br />';
}
foreach ($links as $link)
{
$extension = substr($link, -3);
$image_name = ($extension == 'peg') ? substr($link, -15) : substr($link, -14);
($delete_submit) ? deleteImage('.' . $image_name, $link) : '';
echo '<div>';
echo '<table>';
echo '<tr><td class="fullwidth"><a class="preview_img" href="' . $link . '"><img src="' . $link . '" title="Click to enlarge" width="300" class="thumb" /></a></td></tr>';
echo '<tr><td><span class="default">Direct:</span> ';
echo '<input type="text" readonly="readonly" class="link-area" onmouseover="this.select();" value="' . $link . '" />';
echo '</td></tr>';
echo ($flag) ? '<hr /><br>' : '';
echo '</table>';
echo '<br>';
echo '</div>';
$flag = true;
}
Ich möchte, dass <div>
eine andere Klasse enthält, je nachdem ob es gerade oder ungerade ist. Wenn es gerade ist, erhält es X-Klasse, wenn es ungerade ist, erhält es Y-Klasse.
Wie mache ich das in meinem Fall? Ich bin total ahnungslos und weiß nicht, wie ich anfangen soll!
Initialisieren Sie eine Variable $count=0;
vor der Schleife. Fügen Sie dann Folgendes in die Schleife ein: ++$count%2?"odd":"even"
.
$count = 0;
foreach ($links as $link)
{
$extension = substr($link, -3);
$image_name = ($extension == 'peg') ? substr($link, -15) : substr($link, -14);
($delete_submit) ? deleteImage('.' . $image_name, $link) : '';
echo '<div class="' . (++$count%2 ? "odd" : "even") . '">';
[...]
$i++;
echo '<div class="'.($i%2 ? 'odd':'even').'>';
[...]
deklarieren Sie vor dem Foreach einen Boolean:
$div_flag = false;
in der Foreach, wo Sie das div wiederholen, fügen Sie folgendes hinzu:
"class=".( $div_flag ? "'odd'" : "'even'" )
am Ende des foreach (oder irgendwo sonst wirklich) fügen Sie folgendes hinzu:
$div_flag = !$div_flag;
Wenn Sie an einer Prototyp-Site arbeiten, können Sie immer eine reine CSS-Lösung implementieren:
div:nth-child(even) { /* Apply even class rules here */ }
div:nth-child(odd) { /* Apply odd class rules here */ }
Ich empfehle Ihnen, dies nur für Prototyp-Websites zu verwenden, weil die Kompatibilität für :nth-child
IE8 oder darunter nicht unterstützt.
Wenn Sie einen modernen Browser verwenden, können Sie CSS mit etwas Ähnlichem in Ihrem Stylesheet verwenden.
div:nth-child(odd)
{
background:#ff0000;
}
div:nth-child(even)
{
background:#0000ff;
}
Fügen Sie eine Variable für Ihre Schleife hinzu.
$c = true;
foreach ($links as $link)
{
$extension = substr($link, -3);
$image_name = ($extension == 'peg') ? substr($link, -15) : substr($link, -14);
($delete_submit) ? deleteImage('.' . $image_name, $link) : '';
echo '<div'.(($c = !$c)?' class="odd"':'').">
//echo '<div>';
echo '<table>';
echo '<tr><td class="fullwidth"><a class="preview_img" href="' . $link . '"><img src="' . $link . '" title="Click to enlarge" width="300" class="thumb" /></a></td></tr>';
echo '<tr><td><span class="default">Direct:</span> ';
echo '<input type="text" readonly="readonly" class="link-area" onmouseover="this.select();" value="' . $link . '" />';
echo '</td></tr>';
echo ($flag) ? '<hr /><br>' : '';
echo '</table>';
echo '<br>';
echo '</div>';
$flag = true;
}
Ohne Zähler:
<?php $toggle_class = 'even';?>
<?php foreach ($links as $link):?>
<?php $toggle_class = ($toggle_class == 'odd' ? 'even' : 'odd');?>
<div class="<?php echo $toggle_class;?>">
Your div content...
</div>
<?php endforeach;?>
Versuchen Sie so etwas
$count = 0;
foreach($links as link) {
$count++;
print ($count % 2 == 1) ? "odd" : "even";
}