Как использовать разные фрагменты кода внутри цикла while() в PHP?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как использовать разные фрагменты кода внутри цикла while() в PHP?

Сообщение Anonymous »

Я не знаю, как правильно задать этот вопрос. Я изменяю файлы CSV несколькими шагами в PHP. Я создал класс для файлов и несколько методов. В большинстве методов мне приходится читать CSV и что-то менять в цикле while(). Итак, теперь у меня есть серьезные методы, которые используют почти один и тот же код, различия есть только внутри циклов while(), и я подумал, что это должно быть возможно инкапсулировать в baseMethod(), но, к сожалению, мне пока не везет. . Я пробовал что-то вроде этого:

Код: Выделить всё

class Csv {
public $src;
public $trgt;

function baseMethod(callable $callback) {
$rownum = 0;
$header = [];

if (($fhs = fopen($this->src, 'r+')) &&
($fht = fopen($this->trgt, 'w+'))) {

while (($csvr = fgetcsv($fhs, null, ';', '"')) !== false) {
if ($rownum++ == 1) {
$header = $csvr;
fputcsv($fht, $header);
} else {
$row = array_combine($header, $csvr);

$row = $callback($row, $header); # only this part changes, and sometimes the header...

fputcsv($fht, $row);
}
}

fclose($fhs);
fclose($fht);
}
}

function sortColums() {
$this->baseMethod(function($row, $header) {
foreach ($this->sortCols as $col) {
if (!empty($row[$col]) && str_contains($row[$col], '|')) {
$colValues = explode('|', $row[$col]);
sort($colValues);
$row[$col] = implode('|', $colValues);
}
}
return $row;
});
}
}
но записанный целевой файл был намного меньше, и были написаны только запятые, и, честно говоря, я понятия не имею, почему. Возможно ли вообще то, что я пытаюсь сделать? Можете ли вы указать мне правильное направление?

Подробнее здесь: https://stackoverflow.com/questions/789 ... oop-in-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»