PHP For Loops

So what’s a loop then? A loop is something that goes round and round. If I told you to move a finger around in a loop, you’d have no problem with the order (unless you have no fingers!) In programming, it’s exactly the same. Except a programming loop will go round and round until you tell it to stop. You also need to tell the programme two other things – where to start your loop, and what to do after it’s finished one lap (known as the update expression).

You can programme without using loops. But it’s an awful lot easier with them. Consider this.

You want to add up the numbers 1 to 4: 1 + 2 + 3 + 4. You could do it like this:

$answer = 1 + 2 + 3 + 4;
print $answer;

Fairly simple, you think. And not much code, either. But what if you wanted to add up a thousand numbers? Are you really going to type them all out like that? It’s an awful lot of typing. A loop would make life a lot simpler. You use them when you want to execute the same code over and over again.

We’ll discuss a few flavours of programming loops, but as the For Loop is the most used type of loop, we’ll discuss those first.

For Loops

Here’s a PHP For Loop in a little script. Type it into new PHP script and save your work. Run your code and test it out.

<?PHP

$counter = 0;
$start = 1;

for($start; $start < 11; $start++) {

$counter = $counter + 1;
print $counter . "<BR>";

}

?>

How did you get on? You should have seen the numbers 1 to 10 printed on your browser page.

The format for a For Loop is this:

for (start value; end value; update expression) {

}

The first thing you need to do is type the name of the loop you’re using, in this case for. In between round brackets, you then type your three conditions:

Start Value
The first condition is where you tell PHP the initial value of your loop. In other words, start the loop at what number? We used this:

$start = 1;

We’re assigning a value of 1 to a variable called $start. Like all variables, you can make up your own name. A popular name for the initial variable is the letter i . You can set the initial condition before the loop begins, like we did:

$start = 1;

for($start; $start < 11; $start++) {

Or you can assign your loop value right in the For Loop code:

for($start = 1; start < 11; start++) {

The result is the same – the start number for this loop is 1
End Value
Next, you have to tell PHP when to end your loop. This can be a number, a Boolean value, a string, etc. Here, we’re telling PHP to keep going round the loop while the value of the variable $start is Less Than 11.

for($start; $start < 11; $start++) {

When the value of $start is 11 or higher, PHP will bail out of the loop.
Update Expression
Loops need a way of getting the next number in a series. If the loop couldn’t update the starting value, it would be stuck on the starting value. If we didn’t update our start value, our loop would get stuck on 1. In other words, you need to tell the loop how it is to go round and round. We used this:

$start++

In a lot of programming language (and PHP) the double plus symbol (++) means increment (increase the value by one). It’s just a short way of saying this:

$start = $start + 1

You can go down by one (decrement) by using the double minus symbol (–), but we won’t go into that.

So our whole loop reads “Starting at a value of 1, keep going round and round while the start value is less than 11. Increase the starting value by one each time round the loop.”

Every time the loop goes round, the code between our two curly brackets { } gets executed:

$counter = $counter + 1;
print $counter . "<BR>";

Notice that we’re just incrementing the counter variable by 1 each time round the loop, exactly the same as what we’re doing with the start variable. So we could have put this instead:

$counter ++

The effect would be the same. As an experiment, try setting the value of $counter to 11 outside the loop (it’s currently $counter = 0). Then inside the loop, use $counter- – (the double minus sign). Can you guess what will happen? Will it crash, or not? Or will it print something out? Better save your work, just in case!