我有关联数组' $ 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;
所有私有属性都存在所有setter和getter。
我想用CSV标题将所有对象写入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的新手
答案 0 :(得分:1)
您需要一种动态访问私有属性列表的方法。以下是执行此操作的函数示例:
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
方法。
答案 1 :(得分:0)
只需将对象数组转换为数组数组,然后使用this post或this
中的函数<?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;
}