possibilité de skip les premières lignes

This commit is contained in:
Jephté Clain 2025-06-16 23:15:02 +04:00
parent a44da62b94
commit 9cf7ac908f

View File

@ -52,6 +52,7 @@ abstract class AbstractReader implements IReader {
$this->headers = $params["headers"] ?? static::HEADERS; $this->headers = $params["headers"] ?? static::HEADERS;
$this->useHeaders = $params["use_headers"] ?? static::USE_HEADERS; $this->useHeaders = $params["use_headers"] ?? static::USE_HEADERS;
$this->input = $params["input"] ?? static::INPUT; $this->input = $params["input"] ?? static::INPUT;
$this->skip = $params["skip"] ?? 0;
$this->trim = boolval($params["trim"] ?? static::TRIM); $this->trim = boolval($params["trim"] ?? static::TRIM);
$this->emptyAsNull = boolval($params["empty_as_null"] ?? static::EMPTY_AS_NULL); $this->emptyAsNull = boolval($params["empty_as_null"] ?? static::EMPTY_AS_NULL);
$this->parseNone = boolval($params["parse_none"] ?? static::PARSE_NONE); $this->parseNone = boolval($params["parse_none"] ?? static::PARSE_NONE);
@ -67,6 +68,8 @@ abstract class AbstractReader implements IReader {
protected $input; protected $input;
protected int $skip;
protected bool $trim; protected bool $trim;
protected bool $emptyAsNull; protected bool $emptyAsNull;
@ -81,15 +84,16 @@ abstract class AbstractReader implements IReader {
protected function cookRow(array &$row): bool { protected function cookRow(array &$row): bool {
if (!$this->useHeaders) return true; if (!$this->useHeaders) return true;
if ($this->isrc == 0) { if ($this->skip > 0) {
$this->skip--;
return false;
}
if ($this->headers === null) {
# ligne d'en-tête # ligne d'en-tête
$headers = $this->headers; if ($this->schema === null) $headers = null;
if ($headers === null) { else $headers = array_keys($this->schema);
if ($this->schema === null) $headers = null; if ($headers === null) $headers = $row;
else $headers = array_keys($this->schema); $this->headers = $headers;
if ($headers === null) $headers = $row;
$this->headers = $headers;
}
return false; return false;
} }
A::ensure_size($row, count($this->headers)); A::ensure_size($row, count($this->headers));