php - 对所有对象属性进行 foreach

标签 php loops

如何从该类内部或外部对一个类的所有字段执行 foreach?例如,给定以下类:

class Foo
{
    public $a;
    public $b;
    private $c;
    private $d;

    public function __construct($params)
    {
        foreach($params as $k=>$v){
            $this->$k = $v;
        }
    }

    public function showAll()
    {
        $output = array();
        foreach (this as $k=>$v) {    // How to refer to all the class properties?
            $output[$k] = $v;
        }
        return $output;
    }

}
foreach() 怎么可能?在 showAll()方法引用$a , $b , $c , 和 $d特性?

就此而言,可以从类外获取所有公共(public)属性吗?
$params = array();
$foo = new Foo($params);

foreach ($foo->allProperties as $f=>$v) {    // how to do this?
    echo "{$f}: {$v}\n";
}

最佳答案

自 PHP4 起,您可以使用 get_object_vars 迭代对象的公共(public)属性。

foreach (get_object_vars($foo) as $f => $v) {
    echo "{$f}: {$v}\n";
}

自 PHP5 起 you can直接遍历对象:
foreach ($foo as $f => $v) {
    echo "{$f}: {$v}\n";
}

关于php - 对所有对象属性进行 foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15700325/

相关文章:

javascript - 有没有办法使用 "mailto"发送电子邮件,并使用代码检查用户是否拥有 Gmail 或 Outlook(或其他)帐户?

java - 循环后如何将这些单词构建为一个句子?

使用 z-index 的 CSS 轮播

Python:迭代数组的行和列

java - 在循环java中打印计数

php - 如果 true 使用 foreach 循环,否则使用 while

php - 检查是否使用 mysql 变量设置了 $_POST 变量

php - 使用 PHP 和 MySQL 表结构向另一个用户的个人资料中写入帖子

php - 用于 PHP 函数的 Eclipse PDT Intellisense

php - Yii 2 的最低 PHP/服务器要求