Looping through all the properties of object php

Php

Php Problem Overview


How can I loop through all the properties of object?. Right now I have to write a new code line to print each property of object

echo $obj->name;
echo $obj->age;

Can I loop through all the properties of an object using foreach loop or any loop?

Something like this

foreach ($obj as $property => $value)  

Php Solutions


Solution 1 - Php

If this is just for debugging output, you can use the following to see all the types and values as well.

var_dump($obj);

If you want more control over the output you can use this:

foreach ($obj as $key => $value) {
    echo "$key => $value\n";
}

Solution 2 - Php

For testing purposes I use the following:

//return assoc array when called from outside the class it will only contain public properties and values 
var_dump(get_object_vars($obj)); 

Solution 3 - Php

Before you run the $object through a foreach loop you have to convert it to an array:

$array = (array) $object;  

 foreach($array as $key=>$val){
      echo "$key: $val";
      echo "<br>";
 }



Solution 4 - Php

Here is another way to express the object property.

foreach ($obj as $key=>$value) {
    echo "$key => $obj[$key]\n";
}

Solution 5 - Php

Sometimes, you need to list the variables of an object and not for debugging purposes. The right way to do it is using get_object_vars($object). It returns an array that has all the class variables and their value. You can then loop through them in a foreach loop. If used within the object itself, simply do get_object_vars($this)

Solution 6 - Php

David's answer is solid as long as either: a) you only need access to public attributes, or b) you are working with the stdClass object. If you have defined private or protected attributes in a class and want to display all attributes, simply add an instance method that iterates the properties:

class MyClass {

  public $public_attr1;
  private $private_attr2;
  protected $protected_attr3;

  function iterateAttributes() {
    foreach ($this as $attr=>$value) {
      echo "$attr: $value <br/>";
    }
  }

}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDaricView Question on Stackoverflow
Solution 1 - PhpDavid HarknessView Answer on Stackoverflow
Solution 2 - PhpDimiView Answer on Stackoverflow
Solution 3 - PhpRexView Answer on Stackoverflow
Solution 4 - PhpBudoveView Answer on Stackoverflow
Solution 5 - PhpJG EstiotView Answer on Stackoverflow
Solution 6 - PhpGraceRgView Answer on Stackoverflow