/    Sign up×
Community /Pin to ProfileBookmark

[RESOLVED] Do once in a loop

I’m using a WHILE loop right now, and on the first iteration I want to
echo out some extra content. Pretty much just an extra LI tag, is there
a way to do this other than what I’m doing here?

[code=php]
<?php
function xV() {
GLOBAL $video, $root;

# VAR List
$swfobj = $root.’swfobject/’;
$options = ‘options={counterType:’skip’,continuous:true,animSequence:’sync’};width=640;height=498;’;
$string = ‘<a href=”‘.$swfobj.$video[1].$i.’_controller.swf?’.$video[1].$i.’.flv” rel=”shadowbox[‘
.$video[1].’];’.$options.'” title=”‘.$video[2].'”></a>’;

isset( $video[‘starter’] ) ? $i = $starter : $i = 1;
$i = str_pad( $i, 2, “0”, STR_PAD_LEFT );

# Once with LI tags
echo “n”.”<li style=’display:block;’>$string</li>”;

# The rest in blank LI tags
echo “n”.'<li style=”display:none;”>’;

$i = $i – 1; $a = 0;
while ( $i <= $a ): $t = str_pad( $i, 2, “0”, STR_PAD_LEFT );

echo “n”.$string;
$i++;

endwhile;

echo “n”.'</li>’;
}
?>

<? # Stinger RGB ?><? $video = array(“starter” => “0”, 0 => ‘3’, 1 => ‘stingerrgb’, 2 => ‘Stinger RGB’); xV(); ?>
[/code]

[color=red]So. What’s going on here?[/color]
The first iteration is enclosed in its own LI tags with display set to BLOCK.
The rest of the iterations are enclosed in a single LI tag with display set
to NONE. This effectively hides them from view, but loads them for my
shadowbox viewer.

[color=red]Note:[/color]
Code has just been written, and might be invalid.

Here’s ‘Roughly’ what the end output should look like.

[code=html]
<li><a href=”http://omnisistem.com/swfobject/stingerrgb00_controller.swf?stingerrgb00.flv” rel=”shadowbox[stingerrgb];options={counterType:’skip’,continuous:true,animSequence:’sync’};width=640;height=498;” title=”Stinger RGB”>Stinger RGB</a></li>
<li style=”display:none;”>
<a href=”http://omnisistem.com/swfobject/stingerrgb01_controller.swf?stingerrgb01.flv” rel=”shadowbox[stingerrgb];options={counterType:’skip’,continuous:true,animSequence:’sync’};width=640;height=498;” title=”Stinger RGB”></a>
<a href=”http://omnisistem.com/swfobject/stingerrgb02_controller.swf?stingerrgb02.flv” rel=”shadowbox[stingerrgb];options={counterType:’skip’,continuous:true,animSequence:’sync’};width=640;height=498;” title=”Stinger RGB”></a>
<a href=”http://omnisistem.com/swfobject/stingerrgb03_controller.swf?stingerrgb03.flv” rel=”shadowbox[stingerrgb];options={counterType:’skip’,continuous:true,animSequence:’sync’};width=640;height=498;” title=”Stinger RGB”></a>
</li>
[/code]

to post a comment
PHP

9 Comments(s)

Copy linkTweet thisAlerts:
@ehimeauthorSep 09.2009 — Looks like my isset isn't working, other than that though....
Copy linkTweet thisAlerts:
@SyCoSep 09.2009 — You could do it a few ways. Here's one example using isset() and unset();

[code=php]$firsttime=1;
for($i=0;$i<3;$i++){
if(isset($firsttime)){
echo 'first time only ';
unset($firsttime);
}else{
echo '2nd onwards ';
}
}[/code]
Copy linkTweet thisAlerts:
@ehimeauthorSep 09.2009 — Don't use for loops alot but that was what I was thinking (sort of) before I made this while loop. So (technically speaking) it would look something like this?

[code=php]
function xV() {
GLOBAL $video, $root;

# Prime Loop
$i = isset( $video['starter'] ) ? $starter : 1;
$i = str_pad( $i, 2, "0", STR_PAD_LEFT );
$a = $video[0] - 1;
$b = 1;

# VAR List
$swfobj = $root.'swfobject/';
$options = 'options={counterType:'skip',continuous:true,animSequence:'sync'};width=640;height=498;';
$string = "t".'<a href="'.$swfobj.$video[1].$i.'_controller.swf?'.$video[1].$i.'.flv" rel="shadowbox['
.$video[1].'];'.$options.'" title="'.$video[2].'">'.$video[2].'</a>';

for( $i = $i; $i < $a; $i++ ){
if(isset($b)){
echo "n"."<li style='display:block'>$string</li>";
unset($b);

} else {
echo "t".'<a href="'.$swfobj.$video[1].$i.'_controller.swf?'.$video[1].$i.'.flv"'.
'rel="shadowbox['.$video[1].'];'.$options.'" title="'.$video[2].'">'.$video[2].'</a>';
}
}
}
[/code]
Copy linkTweet thisAlerts:
@SyCoSep 09.2009 — looks reasonable to me.
Copy linkTweet thisAlerts:
@ehimeauthorSep 09.2009 — This worked here. Looks like about the same amount of code but *shrugs

Anything you see I can tighten up, or cut corners on SyCo?

[code=php]
function xV() {
GLOBAL $video, $root;

# Prime Loop
$i = isset( $video['starter'] ) ? $starter : 1;
$i = str_pad( $i, 2, "0", STR_PAD_LEFT );
$a = $video[0];
$b = 1;

# VAR List
$swfobj = $root.'swfobject/';
$options = 'options={counterType:'skip',continuous:true,animSequence:'sync'};width=640;height=498;';
$string = "t".'<a href="'.$swfobj.$video[1].$i.'_controller.swf?'.$video[1].$i.'.flv" rel="shadowbox['
.$video[1].'];'.$options.'" title="'.$video[2].'">'.$video[2].'</a>';

for( $i = $i; $i < $a; $i++ ){
if(isset($b)){
echo "n"."<li style='display:block'>$string</li>";
echo "n".'<li style="display:none;">';
unset($b);

} else { $i = str_pad( $i, 2, "0", STR_PAD_LEFT );

echo "nt"."$string";
}
}
echo "n".'</li>';
}
[/code]
Copy linkTweet thisAlerts:
@SyCoSep 09.2009 — Just watch you variable names. Single letters get cryptic to anyone else and you in six months. $i is usually is just the iteration. $i=$something_else is clearer.

If you need an <li>blah</li> on each iteration then it's like this.
[code=php]
for( $i = $i; $i < $a; $i++ ){
if(isset($b)){
echo "n"."<li style='display:block'>$string</li>";
unset($b);
} else {

$i = str_pad( $i, 2, "0", STR_PAD_LEFT );// your counter will get rewritten here. might give unpredictable results
echo "n".'<li style="display:none;">'."nt"."$string"."n".'</li>';
}
}
[/code]
Copy linkTweet thisAlerts:
@MindzaiSep 09.2009 — I'd also get rid of those globals and pass them in as arguments. Globals are evil.
Copy linkTweet thisAlerts:
@SyCoSep 09.2009 — +1
Copy linkTweet thisAlerts:
@ehimeauthorSep 09.2009 — Cool, thanks guys, you kickass!
×

Success!

Help @ehime spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 5.4,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @Yussuf4331,
tipped: article
amount: 1000 SATS,

tipper: @darkwebsites540,
tipped: article
amount: 10 SATS,

tipper: @Samric24,
tipped: article
amount: 1000 SATS,
)...