php 数组导出csv_PHP – 将对象数组导出为CSV

如果您的所有属性都是公开的,那将非常容易:

// Test class

class Produit

{

public $id_produit;

public $reference;

// Test data

public function __construct()

{

$this->id_produit = rand(1, 255);

$this->reference = rand(1, 255);

}

}

// Test data array

$array = array(new Produit(), new Produit());

// Notice, you can only use a single character as a delimiter

$delimiter = '|';

if (count($array) > 0) {

// prepare the file

$fp = fopen('test/file.csv', 'w');

// Save header

$header = array_keys((array)$array[0]);

fputcsv($fp, $header, $delimiter);

// Save data

foreach ($array as $element) {

fputcsv($fp, (array)$element, $delimiter);

}

}

但正如我所看到的,您的财产受到保护.这意味着我们无法访问对象外的属性以及循环遍历它们或使用(数组)类型转换.所以在这种情况下,您必须对对象进行一些更改:

// Test class

class Produit

{

// ...

public function getProperties()

{

return array('id_produit', 'reference');

}

public function toArray()

{

$result = array();

foreach ($this->getProperties() as $property) {

$result[$property] = $this->$property;

}

return $result;

}

}

然后你可以使用new方法来代替类型转换,如下所示:

// Save data

foreach ($array as $element) {

fputcsv($fp, $element->toArray(), $delimiter);

}

还要感谢新的mehod getProperties,我们可以改变标题:

// Save header

fputcsv($fp, $array[0]->getProperties(), $delimiter);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值