Array o.i.d. tijdens "foreach"

Status
Niet open voor verdere reacties.

Hosballz

Gebruiker
Lid geworden
6 mrt 2012
Berichten
24
hey, ik heb een fijn scriptje:

PHP:
 <?php
error_reporting(E_ALL);
$feedURL = 'http://gdata.youtube.com/feeds/api/users/ghqnl/uploads?max-results=3';
$sxml = simplexml_load_file($feedURL);
$i=0;
foreach ($sxml->entry as $entry) {
      $media = $entry->children('media', true);
      $watch = (string)$media->group->player->attributes()->url;
      $thumbnail = (string)$media->group->thumbnail[0]->attributes()->url;
      ?> 
      
                              <figure class="last"> //Die moet variabel worden.
		        			   <figcaption>
	        					<strong><? echo $media->group->title; ?></strong>
	        					<span><? echo $media->group->description; ?></span>
	        					<em> </em>
	        					<a href="<? echo $watch; ?>" ></a>
			        		</figcaption>
			        		<a href="<? echo $watch; ?>"  ><img src="<? echo $thumbnail;?>"></a>
		        		</figure>
      <?php  } ?>

<figure class="last"> moet kunnen veranderen naar figure voor de 1e en 2e xml entry (limit is 3, en je raad het al, de laatste moet de last class hebben (om het design te laten kloppen), hoe los ik dit op? het enige wat ik zou kunnen bedenken is via een array die doorloopt met de entry's, maar hoe ik dat moet realiseren heb ik ook geen idee van... Iemand een idee?
heel erg bedankt alvast!
 
Kun je hier iets mee?


PHP:
<?php
error_reporting(E_ALL);
$feedURL = 'http://gdata.youtube.com/feeds/api/users/ghqnl/uploads?max-results=3';
$sxml = simplexml_load_file($feedURL);

$i=1;          // die had je al

foreach ($sxml->entry as $entry) {
      $media = $entry->children('media', true);
      $watch = (string)$media->group->player->attributes()->url;
      $thumbnail = (string)$media->group->thumbnail[0]->attributes()->url;
      ?> 
      
                              <figure class="<?php if ($i==1) { //doe dan iets } ?>"> 
                               <figcaption>
                                <strong><? echo $media->group->title; ?></strong>
                                <span><? echo $media->group->description; ?></span>
                                <em> </em>
                                <a href="<? echo $watch; ?>" ></a>
                            </figcaption>
                            <a href="<? echo $watch; ?>"  ><img src="<? echo $thumbnail;?>"></a>
                        </figure>
      <?php $i++ } ?> // $i met 1 verhogen
 
Laatst bewerkt:
Ik zou eerder de FOREACH dan wijzigen in een FOR
PHP:
<?php
error_reporting(E_ALL);
$feedURL = 'http://gdata.youtube.com/feeds/api/users/ghqnl/uploads?max-results=3';
$sxml = simplexml_load_file($feedURL);

for($i=0; $i < count($sxml->entry); $i++)
{
	$entry		= $sxml->entry[$i];
	$media		= $entry->children('media', true);
	$watch		= (string)$media->group->player->attributes()->url;
	$thumbnail	= (string)$media->group->thumbnail[0]->attributes()->url;
	$class		= $i+1 % 3 == 0 ? ' class="last"' : '';
	?> 
	<figure<?php echo $class; ?>> 
		<figcaption>
			<strong><? echo $media->group->title; ?></strong>
			<span><? echo $media->group->description; ?></span>
			<em> </em>
			<a href="<? echo $watch; ?>" ></a>
		</figcaption>
		<a href="<? echo $watch; ?>"  ><img src="<? echo $thumbnail;?>"></a>
	</figure>
}
?>
De variable $class controleert hoevaak $i+1 gedeeld kan worden door 3 en wat dan de restwaarde is. (Dus 1 / 3 = 0 keer delen en restwaarde 1, 4 / 3 = 1 keer delen en restwaarde 1)

Zodra de restwaarde 0 is geven we die iteratie (elke keer dat de lus uitgevoerd wordt) de class "last" mee :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan