Hello,
This is probably simple but it is driving me crazy.
I need to increment a variable but when it goes over a limit it continues the count by starting from the beginning. like this:
Let's say that the end of the sequence is 10 and I want to go through it 16 times starting from 1
1---2---3---4---5---6---7---8---9---10
1---2---3---4---5---6---7---8---9---10
11-12--13--14--15--16
As you see it ends at 6 and it would return that value.
Number sequence or cycle
Moderator: General Moderators
Re: Number sequence or cycle
This what you're looking for?
If you want it to start at 1, instead of 0, and have it end at 10, not 9...change the 2nd FOR-LOOP to:
Code: Select all
$limit = 16;
for ( $i=0; $i<$limit; $i++ ) {
for ( $x=0; $x<10; $x++ )
echo $i.':'.$x.' -- ';
echo '<br />';
}
/* output:
0:0 -- 0:1 -- 0:2 -- 0:3 -- 0:4 -- 0:5 -- 0:6 -- 0:7 -- 0:8 -- 0:9 --
1:0 -- 1:1 -- 1:2 -- 1:3 -- 1:4 -- 1:5 -- 1:6 -- 1:7 -- 1:8 -- 1:9 --
2:0 -- 2:1 -- 2:2 -- 2:3 -- 2:4 -- 2:5 -- 2:6 -- 2:7 -- 2:8 -- 2:9 --
3:0 -- 3:1 -- 3:2 -- 3:3 -- 3:4 -- 3:5 -- 3:6 -- 3:7 -- 3:8 -- 3:9 --
4:0 -- 4:1 -- 4:2 -- 4:3 -- 4:4 -- 4:5 -- 4:6 -- 4:7 -- 4:8 -- 4:9 --
5:0 -- 5:1 -- 5:2 -- 5:3 -- 5:4 -- 5:5 -- 5:6 -- 5:7 -- 5:8 -- 5:9 --
6:0 -- 6:1 -- 6:2 -- 6:3 -- 6:4 -- 6:5 -- 6:6 -- 6:7 -- 6:8 -- 6:9 --
7:0 -- 7:1 -- 7:2 -- 7:3 -- 7:4 -- 7:5 -- 7:6 -- 7:7 -- 7:8 -- 7:9 --
8:0 -- 8:1 -- 8:2 -- 8:3 -- 8:4 -- 8:5 -- 8:6 -- 8:7 -- 8:8 -- 8:9 --
9:0 -- 9:1 -- 9:2 -- 9:3 -- 9:4 -- 9:5 -- 9:6 -- 9:7 -- 9:8 -- 9:9 --
10:0 -- 10:1 -- 10:2 -- 10:3 -- 10:4 -- 10:5 -- 10:6 -- 10:7 -- 10:8 -- 10:9 --
11:0 -- 11:1 -- 11:2 -- 11:3 -- 11:4 -- 11:5 -- 11:6 -- 11:7 -- 11:8 -- 11:9 --
12:0 -- 12:1 -- 12:2 -- 12:3 -- 12:4 -- 12:5 -- 12:6 -- 12:7 -- 12:8 -- 12:9 --
13:0 -- 13:1 -- 13:2 -- 13:3 -- 13:4 -- 13:5 -- 13:6 -- 13:7 -- 13:8 -- 13:9 --
14:0 -- 14:1 -- 14:2 -- 14:3 -- 14:4 -- 14:5 -- 14:6 -- 14:7 -- 14:8 -- 14:9 --
15:0 -- 15:1 -- 15:2 -- 15:3 -- 15:4 -- 15:5 -- 15:6 -- 15:7 -- 15:8 -- 15:9 --
*/
Code: Select all
for ( $x=1; $x<11; $x++ ) { ... }
- RobertGonzalez
- Site Administrator
- Posts: 14293
- Joined: Tue Sep 09, 2003 6:04 pm
- Location: Fremont, CA, USA
Re: Number sequence or cycle
Adds a little bit of flexibility to it.
Code: Select all
<?php
header('Content-Type: text/plain');
$startnumber = 1;
$outerlimit = 16;
$innerlimit = 10;
for ($i = $startnumber; $i <= $outerlimit; $i++) {
for ($x = $startnumber; $x <= $innerlimit; $x++ ) {
echo "$i:$x\t";
}
echo "\n";
}
?>Re: Number sequence or cycle
Thank you for the reply, my example was just a visual of the process so i guess i'll post it differently:
I start with a variable and show what I would like the end result to be. I'm pretty sure I can accomplish yjis with a function just don't know how.
To put it in another way I want to set a limit like when you work with seconds.
Seconds end at 59 then it start from 00.
so if $seconds = 50 ($seconds + 10) = 00:01:00 I would want to return just the values in the seconds field.
By a limit of 33: Snumber = 29; ($number + 5) should be = 1
In other words if we have a wheel of numbers 1 to 33 and I ask you to move the wheel 35 positions starting from #1, you would end up a #2
I start with a variable and show what I would like the end result to be. I'm pretty sure I can accomplish yjis with a function just don't know how.
To put it in another way I want to set a limit like when you work with seconds.
Seconds end at 59 then it start from 00.
so if $seconds = 50 ($seconds + 10) = 00:01:00 I would want to return just the values in the seconds field.
By a limit of 33: Snumber = 29; ($number + 5) should be = 1
In other words if we have a wheel of numbers 1 to 33 and I ask you to move the wheel 35 positions starting from #1, you would end up a #2
- RobertGonzalez
- Site Administrator
- Posts: 14293
- Joined: Tue Sep 09, 2003 6:04 pm
- Location: Fremont, CA, USA
Re: Number sequence or cycle
Code: Select all
<?php
function getNextInLine($value, $limit) {
if ($limit >= $value) {
return $value;
}
$new = $value - $limit;
return $new >= $limit ? getNextInLine($new, $limit) : $new;
}
//tests
$max = 59;
$me = 122;
echo getNextInLine($me, $max); // Output: 4
?>