我有关联阵列'$ reportdata'具有'report_modal'的对象。
'report_modal'的属性是:
private $unique_product_name;
private $min_price_quote;
private $max_price_quote;
private $mean_price_quote;
private $price_variation;
private $savings_potential;
private $vendor_name_OLP;
所有私人属性都存在所有设置器和getter。
我想用标头写所有对CSV的对象,例如:
Product Name,Min Price,Max Price,Mean Price,Price Variation,Savings Potential,
Vendor Name OLP
Memory Card,110,200,142.5,1.03,0.23,Kingston
USB,125,230,171.5,1.02,0.27,Sandisk
P.S:我是新手PHP
您需要一种动态访问私人属性列表的方法。这是执行此功能的函数的示例:
function toArray($report_modal, $properties) {
return array_map(function($property) use ($report_modal) {
return $report_modal->{'get_'.$property}();
// modify according to how your methods are named
}, $properties);
}
然后,如果您定义了要获取的属性列表
$properties = [
'unique_product_name',
'min_price_quote',
'max_price_quote',
'mean_price_quote',
'price_variation',
'savings_potential',
'vendor_name_OLP',
];
您可以迭代对象数组,将它们转换为数组,然后将它们输出到CSV。
foreach ($reports as $report) {
fputcsv('outputfile.csv', toArray($report, $properties));
}
如果您可以修改课程,也可以在内部实现toArray
方法。
只需将您的对象数组转换为数组数组,然后使用此帖子中的函数或此
<?php
$header = ['Product Name','Min Price','Max Price','Mean Price','Price Variation','Savings Potential','Vendor Name OLP'];
$finalArray = [$header];
foreach ($ascArray as $obj){
$a = [];
$a[] = $obj->get_unique_product_name();
$a[] = $obj->get_min_price_quote();
$a[] = $obj->get_max_price_quote();
$a[] = $obj->get_mean_price_quote();
$a[] = $obj->get_price_variation();
$a[] = $obj->get_savings_potential();
$a[] = $obj->get_vendor_name_OLP();
$finalArray[] = $a;
}