计算对象中变量的数量? - PHP

时间:2015-11-11 12:52:45

标签: php

有没有办法计算对象中的变量数量?

我有一个动态创建的对象,我想将每个属性添加到查询中以将这些属性更新到数据库中。 变量$ oProperties是一个对象:

public function update_model ($id, $oProperties)
{
    $SQL = "UPDATE `table` SET ";
    $count = 0;
    foreach($oProperties as $property=>$value)
    {   
        $count++;
        $SQL .= strtolower($property)." = '".$value."'";
        if($count !== $oProperties::count()) {$SQL .= ", ";}
    }
    $SQL .= " WHERE id='".$id."';";
}

我需要知道对象中的属性数量,以便知道何时停止向查询添加逗号。

2 个答案:

答案 0 :(得分:1)

您可以使用get_object_vars

class foo {
    private $a;
    public $b = 1;
    public $c;
    private $d;
    static $e;
}

$test = new foo;
var_dump(get_object_vars($test));

结果:

array(2) {
  ["b"]=>
  int(1)
  ["c"]=>
  NULL
}

或者如果您的对象的类型为ArrayObject,则可以使用count方法:

$arrayobj = new ArrayObject(array('first','second','third'));
var_dump($arrayobj->count());

但我认为最好使用类似的东西:

public function update_model ($id, $oProperties)
{
    $SQL = "UPDATE `table` SET ";
    $properties = [];
    foreach($oProperties as $property=>$value)
    {
        $properties[] = strtolower($property)." = '".$value."'";
    }
    $SQL .= implode(', ', $properties);
    $SQL .= " WHERE id='{$id}';";
    return $SQL;
}

答案 1 :(得分:1)

$arrayObj = (array)($oProperties);    
print_r(count($arrayObj));