We use cookies on this site to enhance your user experience
By clicking the Accept button, you agree to us doing so. More info on our cookie policy
We use cookies on this site to enhance your user experience
By clicking the Accept button, you agree to us doing so. More info on our cookie policy
PHP Fundamentals
Published: Oct 9, 2021 by C.S. Rhymes
PHP Fundamentals
This post is part of a series of posts about the fundamentals of PHP.
The PHP foreach loop
An alternative to the for loop, the foreach loop is used to iterate or loop over an array. The foreach loop allows you to loop through the items in the array without setting a limit for it to stop like you do in a for loop.
Once the foreach loop has looped through every item it will finish. If there are ten items in the array, then it will loop ten times.
The foreach loop accepts an array as the first argument and then you give a name for the individual array item.
$trees
(the array) as the first argument.as $tree
that can be used within the foreach loop.$trees = ['oak', 'ash', 'birch', 'maple'];
foreach ($trees as $tree) {
echo $tree . ' ';
}
// oak ash birch maple
If you want to, you can break out of a foreach loop rather than looping through every item in the array by using the break
keyword. In the following example we check if the $tree
is equal to ash
then break the loop.
$trees = ['oak', 'ash', 'birch', 'maple'];
foreach ($trees as $tree) {
echo $tree . ' ';
if ($tree === 'ash') {
break;
}
}
// oak ash
You can also use the index in the foreach loop. Here we have an array with the tree names as the key and a count as the value. The first argument is the array, then after the as you have a syntax that looks similar to the array syntax, as $key => $value
where the first variable is the array key and the second is the array value.
$trees = [
'oak' => 4,
'ash' => 3,
'birch' => 8,
'maple' => 6,
];
foreach ($trees as $tree => $count) {
echo "There are $count $tree trees";
echo '</br>';
}
// There are 4 oak trees
// There are 3 ash trees
// There are 8 birch trees
// There are 6 maple trees
If you want to modify the values in an array you can use a foreach loop to do this by putting the &
before the second argument. In this example we add 1 to each of the original values in the array.
$myValues = [1, 2, 3, 4];
foreach ($myValues as &$myValue) {
$myValue = $myValue + 1;
}
print_r($myValues);
// Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 )
There are also other PHP array methods that can be considered for such a use case instead of foreach, such as array_map() and array_walk()
So far we have talked about an array, but what about an array of objects?
Here we have a Tree
class or object that has name
and count
properties. The constructor sets these properties when a new Tree()
class is created.
class Tree
{
public $name;
public $count;
public function __construct($name, $count)
{
$this->name = $name;
$this->count = $count;
}
}
Next we can create an array of these Tree classes and then loop over the array. Rather than having to use the index within the foreach loop, the tree name we can access the Tree’s properties (count
and name
) using the arrow syntax, such as $tree->count
.
$trees = [
new Tree('oak', 4),
new Tree('ash', 3)
];
foreach ($trees as $tree) {
echo "There are $tree->count $tree->name trees";
echo '<br>';
}
There are lots of use cases for a foreach loop so hopefully this introduction will give you ideas to put the foreach loop to use in your code.
Share
Latest Posts
There has been a lot of discussion on Threads recently about becoming a writer, but don’t give up your day job. I have seen a lot of arguments from all sides, some people saying they became a successful full time writer, others saying they would never give up their job, then there are others who became writers full time then went back to another job. Writing has always been a hobby for me, but this discussion has made me think more about why I write.
Version 1.1.0 of Bulma clean theme has been released. It has a small update that allows you to easily add social media links to the footer of your site.
A small village with a big mystery!