Re: Best way of iterating over object member fields?
| From: | Stuart Dallas | Date: | Wed, 03 Sep 2014 09:34:34 +0000 |
| Subject: | Re: Best way of iterating over object member fields? | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-323806@lists.php.net to get a copy of this message | ||
On Wednesday, Sep 3, 2014 at 10:23 am, Peter Ford <pete@justcroft.com>, wrote:
-Stuart
—
Stuart Dallas
3ft9 Ltd
http://3ft9.com/
I came across a bug in some of my code, where I do something like the following:
$obj = new MyObject();
foreach ($obj as $key=>$value)
{
echo $key;
}
Note that I don't use $value in the loop - I'm only doing processing based on
the field name.
Now my IDE flags this unused variable as a hint, so (on autopilot) I changed it
to be
$obj = new MyObject();
foreach (array_keys($obj) as $key)
{
echo $key;
}
Which removes the hint, and looks like the right sort of thing.
Of course this doesn't work: "array_keys() expects parameter 1 to be an array,
object found".
So what is the correct way to list the field names of an object?
Two ways depending on whether you want to get them from the class definition or what the object
actually contains:
* http://php.net/get-class-vars
* http://php.net/get-object-vars