@msimrial

Как циклу предоставить не ряд числе, а только некоторые?

$notInResult = [0,1,2,4,5,7,8];

for ($j = 0; $j < $nColumn; $j++) {
$value = $sheet->getCellByColumnAndRow($j, $i)->getValue();
if(!in_array($j,$notInResult)){
echo "$value";
}
}

Нужно определенные колонки из excel убрать в библиотеке phpExcel. Реализовал таким способом, может кто скажет как велосипед убрать?
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
PQR
@PQR
Можно придумать десяток способов, но у вас достаточно простой, читаемый и понятный код получился, я бы его оставил.

Для примера, вот альтернативы:
$notInResult = [0,1,2,4,5,7,8];
$all = range(0, $nColumn); //массив всех чисел от 0 до $nColumn
$inResult = array_diff($all, $notInResult); //убираем из массива всех чисел те, которые указаны в $notInResult

foreach ($inResult as $j) {
    echo $sheet->getCellByColumnAndRow($j, $i)->getValue();
}


Второй вариант очень похож на ваш, но вместо медленной проверки in_array используется быстрая проверка isset
$notInResult = [0 => true, 1 => true, 2 => true, 4 => true, 5 => true, 7 => true, 8 => true]; //номера скрываемых колонок будем хранить в ключах массива, а значениями массива сделаем заглушку true
for ($j = 0; $j < $nColumn; $j++) {
    if (!isset($notInResult[$j])) {
        echo $sheet->getCellByColumnAndRow($j, $i)->getValue();
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
$excel = array(1,2,3,4,5,6,7,8,9); // Исходный массив
$array = array(1,3,5,7);           // ID на удаление
$c = count($array);

for ($j = 0; $j < $c; $j++) {
    // Удаляем например
    $a = $array[$j];
    unset($excel[$a]);
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы