auto_detect_start_position) { $this->first_line = $this->detectStartPosition(); } CustomVarDamp::dumpAndDie( $this->first_line ); $this->file->setCsvControl($this->$delimiter); $this->file->setFlags(\SplFileObject::READ_CSV); $this->file->seek( $this->first_line ); } protected function detectStartPosition () { $first_column = 0; $find = false; while (!$find) { $j = 0; $row = $this->readRow(); $first_column++; for ($i = 1; $i<=count($row); $i++) { if (!$row[$i]) { $j++; } if ( $j >= $this->min_column_quantity ) { $find = true; break; } } } return $first_column; } /** * @return array * @throws InvalidFileException */ public function read() { // @todo add comments $return = []; $line = 0; $this->keys = NULL; while (($row = $this->readRow()) !== FALSE) { $line++; if ($this->hasHeaderRow) { if ($this->keys === NULL) { $this->keys = array_values($row); } else { if (count($this->keys) !== count($row)) { // Yii::warning("Invalid columns detected on line #$line ."); return $return; } $return[] = array_combine($this->keys, $row); } } else { $return[] = $row; } } $this->closeHandler(); return $return; } protected function closeHandler() { $this->file = NULL; } protected function readRow() // @todo add comments { $row = $this->file->fgetcsv( ); // if (is_array($row)) { $row = array_slice( $row, $this->first_column ); $row = Encoder::encodeArray( $this->in_charset, $this->out_charset, $row ); } else{ $row = false; } // if ($this->keys !== NULL) // @$clear_arr[3] = ValueFilter::pricefilter($clear_arr[3]);{}{}{} return $row; } }