Php 如何将关联数组中的值动态指定给特性

Php 如何将关联数组中的值动态指定给特性,php,arrays,oop,Php,Arrays,Oop,我正在尝试将关联数组中的键和值分配给类属性。下面的代码就是我想到的。尝试使用$user对象时出错。数组可能来自运行数据库查询(PDO) 有没有办法让这一切顺利进行 <?php class assoctoprop { public $fname; public $lname; public $email; public function assign(){ $user = new assoctoprop; $array = array("fname"=>"firs

我正在尝试将关联数组中的键和值分配给类属性。下面的代码就是我想到的。尝试使用$user对象时出错。数组可能来自运行数据库查询(PDO)

有没有办法让这一切顺利进行

<?php

class assoctoprop {

public $fname;
public $lname;
public $email;

public function assign(){
    $user = new assoctoprop;
    $array = array("fname"=>"firstname", "lname"=>"lastname", "email"=>"my@email.com" );
    foreach($array as $key=>$value){
    $user->$key = $value;
    }
    return $user;
}
}
echo $user->fname."<br/>";
echo $user->lname."<br/>";
echo $user->email."<br/>";
?>

这很有效

<?php

class assoctoprop {

public $fname;
public $lname;
public $email;

/*public function assign(){
    $user = new assoctoprop;
    $array = array("fname"=>"firstname", "lname"=>"lastname", "email"=>"my@email.com" );
    foreach($array as $key=>$value){
    $user->$key = $value;
    }
    return $user;
}*/
}
          $user = new assoctoprop;
    $array = array("fname"=>"firstname", "lname"=>"lastname", "email"=>"my@email.com" );
    foreach($array as $key=>$value){
    $user->$key = $value;
    }
echo $user->fname;
echo $user->lname;
echo $user->email;
?>

但我的问题是,我想把整个过程推进到一个方法中,这样我就可以在我想的时候使用它,而不必每次都重新编写过程

在我看来,
assign()
此时应该在类之外

可以从类本身实例化类,但在本例中不需要这样做。只需使用
$this
从内部引用类:

class assoctoprop {

    public $fname;
    public $lname;
    public $email;

    public function assign(){
        $array = array("fname"=>"firstname", "lname"=>"lastname", "email"=>"my@email.com" );
        foreach($array as $key=>$value){
            $this->$key = $value;
        }
    }

}

$user = new assoctoprop;
$user->assign();

echo $user->fname."<br/>";
echo $user->lname."<br/>";
echo $user->email."<br/>";
编辑2:关于使用可能还不存在的类属性(如果您想使其成为动态的)。

在我看来,
assign()
此时应该在类之外

可以从类本身实例化类,但在本例中不需要这样做。只需使用
$this
从内部引用类:

class assoctoprop {

    public $fname;
    public $lname;
    public $email;

    public function assign(){
        $array = array("fname"=>"firstname", "lname"=>"lastname", "email"=>"my@email.com" );
        foreach($array as $key=>$value){
            $this->$key = $value;
        }
    }

}

$user = new assoctoprop;
$user->assign();

echo $user->fname."<br/>";
echo $user->lname."<br/>";
echo $user->email."<br/>";

编辑2:关于使用可能还不存在的类属性(如果您想使其成为动态的)。

除非我误解了您的问题,否则您可以通过将数组上的类型设置为object来完成同样的任务

$object = (object)array("fname" => "firstname", "lname" => "lastname", "email" => "my@email.com");

除非我误解了您的问题,否则您可以通过将数组上的类型设置为object来完成同样的任务

$object = (object)array("fname" => "firstname", "lname" => "lastname", "email" => "my@email.com");

对我可以从assign方法中实例化该类吗?如果您使用PDO,则可以将结果作为用户定义的对象返回。可以使用PDOStatement对象的setFetchMode()方法返回对象。对我可以从assign方法中实例化该类吗?如果您使用PDO,则可以将结果作为用户定义的对象返回。可以使用PDOStatement对象的setFetchMode()方法返回对象。