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


How to assign an array's key value pairs to object's attribute value pairs in PHP

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

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=>$val){
  if(isset($row[$prop])){
   $this->$prop=$row[$prop];
  }
 }
}

另一个选项,假设查询返回应该填充对象的列,您可以使用mysqli_fetch_object():

while($sale[] = mysqli_fetch_object($result, 'sale')) {}

在调用__construct()之前填充属性。还有第三个形参,用于向构造函数传递参数。