PHP创建对象数组

时间:2018-12-08 10:37:45

标签: php

嗨,据我所知,可以在PHP中创建对象数组。当我尝试它时,发生了一些奇怪的事情。这是代码

function createData($sheet, $rowsNumber, $rowOffset){

        $tempData = array();
        $temp = new Column();

        $insert = new InsertData();

        for($i = 0; $i < $rowsNumber; $i++){

            $temp->colName = "nome";
            $temp->colValue = $sheet->getCell('C'.$rowOffset)->getValue(); //nome
            $tempData[0] = $temp;
            $temp->colName = "cognome";
            $temp->colValue = $sheet->getCell('B'.$rowOffset)->getValue(); //cognome 
            $tempData[1] = $temp;
            $temp->colName = "dataNascita";
            $temp->colValue = $sheet->getCell('D'.$rowOffset)->getValue(); //dataNascita
            $tempData[2] = $temp;
            //$data[2] = date($format = "Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($data[2])); //converte in formato data il valore numerico ottenuto da getCell 
            //echo($tempData[2]);
            $temp->colName = "sesso";
            $temp->colValue = $sheet->getCell('BK'.$rowOffset)->getValue(); //sesso  
            $tempData[3] = $temp;
            $temp->colName = "altrePatologie";
            $temp->colValue = $sheet->getCell('CF'.$rowOffset)->getValue(); //altrePatologie
            $tempData[4] = $temp;
            $temp->colName = "codiceDbCook";
            $temp->colValue =  $sheet->getCell('A'.$rowOffset)->getValue(); //codiceDbCook
            $tempData[5] = $temp;

            $insert->insert($tempData, "paziente");
        }

    }

这是$ tempData内部的内容:

  • 0:列 colName:“ codiceDbCook” colValue:312
  • 1:列 colName:“ codiceDbCook” colValue:312
  • 2:列 colName:“ codiceDbCook” colValue:312
  • 3:列 colName:“ codiceDbCook” colValue:312
  • 4:列 colName:“ codiceDbCook” colValue:312
  • 5:列 colName:“ codiceDbCook” colValue:312

它将读取的最后一个值放入所有数组中。有人可以解释是否可以创建对象数组,如果可以的话我在做什么?

1 个答案:

答案 0 :(得分:0)

您需要为每个新列创建一个Column的新实例:

for ($i = 0; $i < $rowsNumber; $i++) {
    $temp = new Column();
    $temp->colName = "nome";
    $temp->colValue = $sheet->getCell('C'.$rowOffset)->getValue();
    $tempData[] = $temp;

    $temp = new Column();
    $temp->colName = "cognome";
    $temp->colValue = $sheet->getCell('B'.$rowOffset)->getValue(); //cognome
    $tempData[] = $temp;

    // and so on, and so forth ...
}

顺便说一句,如果您已经知道$ tempData数组的索引,则可以使用更短的方法来实现:

for ($i = 0; $i < $rowsNumber; $i++) {
    $tempData[0] = new Column();
    $tempData[0]->colName = "nome";
    $tempData[0]->colValue = $sheet->getCell('C'.$rowOffset)->getValue();

    $tempData[1] = new Column();
    $tempData[1]->colName = "cognome";
    $tempData[1]->colValue = $sheet->getCell('B'.$rowOffset)->getValue(); //cognome

    // and so on, and so forth ...
}