Пробую сделать таблицу умножения

Пробую сделать таблицу умножения. Должно быть как на картинке. Не могу понять в чем проблема

это вывод моего кода сгенерировать на PHP мой код

`<?php
echo '<table border="1">';
for ($tr=1; $tr <= 10 ; $tr++ ) {
    echo '<tr>';
    for ($td=1; $td <= 10; $td++) {
        echo '<td>'."$tr x $td = " . $tr * $td.'</td>';
    }
    echo '</tr>';
}
echo '</table>';

`


Ответы (2 шт):

Автор решения: teran
//Есть у вас цифры от 1 до 10
$nums = range(1,10);

// первая строка
echo "<tr>";

//начинаем выводить ячейки
foreach($nums as $x){
    echo "<td>"; 

    // выводим столбец умножения  
    foreach($nums as $y){
       echo "$x x $y = " . $x*$y . "<br/>"
    }
    echo "</td>"

    //после 5й начинаем новую строку
    if($x == 5)  echo "</tr><tr>"
} 
echo "</tr>"
→ Ссылка
Автор решения: Dmitriy Kondratiuk

Несколько советов:

  1. Всегда старайтесь максимально отделять код РНР от кода HTML при таком подходе в случае необходимости намного проще вносить правки
  2. Старайтесь разбивать код на функции. Каждая функция выполняет отдельное действие. В таком случае значительно легче поддерживать код. Вы не будете плодить дублирование кода.
  3. Переменные называть нужно так чтобы по названию понимать для чего она. Тогда вам через некоторое время будет значительно проще разобратся в вашем коде.
  4. Перед написанием кода в голове или на листочке сформулируйте алгоритм что за чем должно идти.

Алгоритм (исходя из нужной картинки):

  • Создаем таблицу
  • В таблицу добавляем ряд в котором будет 5-ть столбцов
  • Добавляем столбец куда помещаем умножение на 1 (повторяем даное действие для 2, 3, 4, 5)
  • Добавляем в таблицу второй ряд в котором будет 5-ть столбцов
  • Добавляем столбец куда помещаем умножение на 6 (повторяем даное действие для 7, 8, 9, 10)

Сам код:

//Считаем произведение
function multiplication($multiplier_1, $multiplier_2){
    return $multiplier_1 ." x ". $multiplier_2 ." = ". $multiplier_1*$multiplier_2;
}

//Считаем произведение для некого числа
function multiplication_by($multiplier){
    for($i=1; $i<=10; $i++){
        $multiplication_column .= multiplication($multiplier, $i) ."</br>";
    }
    return $multiplication_column;
}

//Формируем столбцы для диапазона произведений
function table_columns($from, $to){
    for($i=$from; $i<=$to; $i++){
        $columns .= "<td>". multiplication_by($i) ."</td>";
    }
    return $columns;
}

//Формируем ряд для диапазона столбцов произведений
function table_row($columns_from, $columns_to){
    $row .= "<tr>". table_columns($columns_from, $columns_to) ."</tr>";
    return $row;
}

//Формируем ряды для диапазона столбцов произведений
function table_rows($amount_rows=2, $amount_columns=5){
    $from = 1;
    $to = $amount_columns;
    for($i=1; $i<=$amount_rows; $i++){
        $rows .= "<tr>". table_row($from, $to) ."</tr>";
        $from = $to + 1;
        $to += $amount_columns;
    }
    return $rows;
}

//Выводим таблицу
echo '<table border="1">'. table_rows() .'</table>';

Передавая в table_rows() параметры можно формировать таблицу умножения с разным количеством рядов и столбцов. Например для 3 рядов по 5-ти столбцов будет table_rows(3, 5) - в результате получим таблицу умножения от 1 до 15-ти.

→ Ссылка