我有这样的csv。
id,startScore,endScore,total
1,12,34,46
2,10,20,30
.
.
现在,我的Entity具有相同的列名。
因此,它具有以下类似功能。
setStartScore()
setEndScore()
setTotal()
现在我的php代码如下所示
$lines = explode('\n',$csvFile); // get CSV Content
$header = array_shift($lines); // get header
$headers = explode(",",$header)
foreach($lines as $line){ // each csv line
$table = new Table();
foreach(explodes(',',$line) as $l){
$i = 0;
foreach($headers as $h){
$table->set{$headers[$i]}($l[$i]) //how can I make dynamically make set***() function.
$i++;
}
我想如果我得到了学说的设置器/ getter命名规则,它会很好地工作。...
答案 0 :(得分:1)
您可以使用构造函数来设置数据。
Class Table
// ..
public function __construct($id, $startScore, $endScore, $total){
$this->id = $id;
$this->startScore = $startScore;
$this->endScore = $endScore;
$this->total = $total;
}
然后您可以创建如下对象:
foreach($lines as $line){ // each csv line
$data = explodes(',',$line);
$table = new Table($data[0], $data[1], $data[2], $data[3]);
$em->persist($table);
}
// ..flush