Как сделать код проще

148
12 октября 2021, 16:30

Есть текстовый файлик

jacket.jpg;Куртка;1000;Верхняя одежда
Windbreaker.jpg;Ветровка;1002;Верхняя одежда
Sneakers.jpg;Кросовки;1010;Обувь
boots.jpg;Ботинки;1005;Обувь
pants.jpg;Штаны;1008;Одежда
shirt.jpg;Рубашка;1004;Одежда
Cap.jpg;Кепка;1007;Головные уборы

я его преобразую в таблицу

<?php
$file1 = fopen("category.txt", "r");
$files = array($file1);
   foreach($files as $file){
    while (($line = fgets($file)) !== false) {
    $value[]= explode(';',trim($line));
  }
}
echo'<table>';
$row=count($value);
$set=$row/'3'; 
for ($tr1=0; $tr1<$set; $tr1++){
echo'<tr>';
for ($tr=0; $tr<=2; $tr++){
$s='<td><img width="64px" src="C:\image\\'.$value[$tr1*3+$tr][0].'"><br>Название:'.$value[$tr1*3+$tr][1].'<br>цена:'.$value[$tr1*3+$tr][2].'</td>';
echo $s;
}
echo'</tr>';
}
echo'</table>';
?>

Получается 2 окошка в третей строке таблицы с ошибками. https://ibb.co/vZG9VQq

Answer 1

давайте напишем по другому: можно воспользоваться fgetcsv, а можно сразу получить массив строк при помощи file. И побить на группы по три при помощи array_chunk

$values = array_map(function ($line) { return explode(';',trim($line));},
               file("category.txt", FILE_IGNORE_NEW_LINES |FILE_SKIP_EMPTY_LINES));
$values = array_chunk($values, 3);
echo '<table>';
foreach($values as $row) {
    echo'<tr>';
    foreach($row as $item) {
        echo '<td><img width="64px" src="C:\image\\'.$item[0].'"><br>Название:'.$item[1].'<br>цена:'.$item[2].'</td>';
    }
    echo'</tr>';
}
echo'</table>';
READ ALSO
PHP кукиес не работают. Можно удалить php?

PHP кукиес не работают. Можно удалить php?

Не работают куки в PHP, имеем массив со всеми переводами текста: $local ассоциативный массив в котором ещё массивы выглядит это всё примерно так

121
Приём платежей на сайте без агрегата

Приём платежей на сайте без агрегата

Ребята ,кто знает по какому принципу устроена приём платежей на сайте без сторонних агрегатов типо робокасса и тд

98
Вопрос по SEO и GET

Вопрос по SEO и GET

Друзья, не пинайте в животинтересует вопрос

96