Array and Object Property Iteration

In PHP you can iterate through all the elements in an array using foreach. Although other methods are available, this is the preferred syntax for looping though results:

$person = array('firstname' => 'Rasmus',
                'lastname'  => 'Lerdorf');

foreach ($person as $key => $value) {
    print "$key: $value\n";
}
firstname: Rasmus
            lastname: Lerdorf

You can also use foreach to view an object’s properties:

class Person {
    // hardcode values for demonstration
    public $firstname = 'Rasmus';
    public $lastname  = 'Lerdorf';
}

$person = new Person;
foreach ($person as $property => $value) {
    print "$property: $value\n";
}
firstname: Rasmus
            lastname: Lerdorf

In PHP 5, if an object property cannot be accessed because it is set as protected or private, then it will be skipped during iteration.

For example, update Person to include a private email attribute:

class Person {
    // hardcode values for demonstration
    public  $firstname = 'Rasmus';
    public  $lastname  = 'Lerdorf';
    private $email     = 'rasmus@php.net';
}

$person = new Person;
foreach ($person as $property => $value) {
    print "$property: $value\n";
}
firstname: Rasmus
            lastname: Lerdorf

The email property is not printed, because you cannot access it from outside the class, but the results are different when you do a foreach inside the class. For instance, add a method named printInfo( ):

class Person { // hardcode values for demonstration public $firstname = 'Rasmus'; public $lastname = 'Lerdorf'; private $email = 'rasmus@php.net'; ...

Get Upgrading to PHP 5 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.