如何在PHP中将数组的键值对分配给对象的属性值对

如何在PHP中将数组的键值对分配给对象的属性值对,php,arrays,object,assign,Php,Arrays,Object,Assign,我想知道如何在PHP中将数组的键值对分配给对象的属性值对。这就是我正在尝试的。在创建对象时,我使用构造函数通过参数发送frm数组中的所有值来设置所有属性。但我认为应该有一种更简洁、更有效的方法来做到这一点。如果有人知道,请分享 function display_stock($connection) { $query = "SELECT * FROM `stock` "; $result= mysqli_query($connection, $query); $stock = array()

我想知道如何在PHP中将数组的键值对分配给对象的属性值对。这就是我正在尝试的。在创建对象时,我使用构造函数通过参数发送frm数组中的所有值来设置所有属性。但我认为应该有一种更简洁、更有效的方法来做到这一点。如果有人知道,请分享

function display_stock($connection)
{
 $query = "SELECT * FROM `stock` ";
 $result= mysqli_query($connection, $query);
 $stock = array();
 for ($i = 0;$row= mysqli_fetch_assoc($result); $i++)
 {
    $stock[$i] = new stock( $row);
 }
return $stock;
}
这是构造函数的代码

public function __construct($l_code, $date, $all_lengths_size, $overall_cost)
{
    $this->l_code=$l_code;
    $this->date=$date;
    $this->all_lengths_size=$all_lengths_size;
    $this->overall_cost=$overall_cost;
}

请注意,我必须返回一个对象数组,因此此处仅传递$row是不可行的。

您可以使用相应的构造函数来设置属性,如下所示:

public function __construct($row){
 foreach ($row as $prop=>$value){
  $this->$prop=$value;
 }
}
或者您只能像这样设置您感兴趣的属性

public function __construct($row){
  $propertiesilike=array("customer_name", "p_type");
 foreach ($propertiesilike as $prop){
  if(isset($row[$prop])){
   $this->$prop=$value;
  }
 }
}

您可以使用相应设置属性的构造函数,如下所示:

public function __construct($row){
 foreach ($row as $prop=>$value){
  $this->$prop=$value;
 }
}
或者您只能像这样设置您感兴趣的属性

public function __construct($row){
  $propertiesilike=array("customer_name", "p_type");
 foreach ($propertiesilike as $prop){
  if(isset($row[$prop])){
   $this->$prop=$value;
  }
 }
}

另一个选项是,假设查询返回应填充对象的列,则可以使用mysqli\u fetch\u对象:


这将在调用_构造之前填充属性。还有第三个参数可以将参数传递给构造函数。

另一个选项,假设查询返回应该填充对象的列,您可以使用mysqli\u fetch\u对象:


这将在调用_构造之前填充属性。还有第三个参数可以将参数传递给构造函数。

不太可能,除非您想传递数组本身、新的sale$行并让构造函数提取其需要的任何位。这可能是一个更好的方法,因为这个方法看起来很长!我同意@MarcB的方法。如果您的行也更改了怎么办?你不想改变这个长对象声明中的代码,也不想改变它的构造函数中的代码。不想,除非你想传入数组本身,新的sale$行并让构造函数提取它需要的任何位。也许这是一个更好的方法,因为这个方法看起来很长!我同意@MarcB的方法。如果您的行也更改了怎么办?您不想更改这个长对象声明及其构造函数中的代码。次要改进:sale::class比“sale”更好。次要改进:sale::class比“sale”更好。第一个很酷。但在第二个例子中,你认为美元的价值来自哪里?它没有定义!我相信你想写这个$this->$prop=$row[$prop];第一个很酷。但在第二个例子中,你认为美元的价值来自哪里?它没有定义!我相信你想写这个$this->$prop=$row[$prop];