Я получаю неопределенную ошибку индекса для многомерного массива в php

Я новичок в php, поэтому я пытался закодировать программу, которая добавляет две матрицы 3x3. Я получаю неопределенную ошибку символа несколько раз в php-коде.
Есть ли другой способ определения многомерных массивов в php.`
Уже существует множество программ по решению этой проблемы для одномерного массива. Они являются жесткими значениями по умолчанию для кодирования. Предоставление значений по умолчанию для каждого элемента массива потребует много времени.
Вот мой код:

    <html>
    <head></head>
    <body>
        <form action="matAdd.php" method="post">
            Enter values in first matrix:
            <table cellpadding=10 cellspacing=10>
            <tr>
            <td>
            <table>
                <tr><td colspan="3">Matrix 1</td>
                </tr>
                <tr>
                    <td><input type="number" name="m00" size="3" required/></td>
                    <td><input type="number" name="m01" size="3" required/></td>
                    <td><input type="number" name="m02" size="3" required/></td>
                </tr>
                <tr>
                    <td><input type="number" name="m10" size="3" required/></td>
                    <td><input type="number" name="m11" size="3" required/></td>
                    <td><input type="number" name="m12" size="3" required/></td>
                </tr>
                <tr>
                    <td><input type="number" name="m20" size="3" required/></td>
                    <td><input type="number" name="m21" size="3" required/></td>
                    <td><input type="number" name="m22" size="3" required/></td>
                </tr>
            </table>
            </td>
            <td>
            <table>
                <tr>
                    <td colspan="3">Matrix 2</td>
                </tr>
                <tr>
                    <td><input type="number" name="n00" size="3" required/></td>
                    <td><input type="number" name="n01" size="3" required/></td>
                    <td><input type="number" name="n02" size="3" required/></td>
                </tr>
                <tr>
                    <td><input type="number" name="n10" size="3" required/></td>
                    <td><input type="number" name="n11" size="3" required/></td>
                    <td><input type="number" name="n12" size="3" required/></td>
                </tr>
                <tr>
                    <td><input type="number" name="n20" size="3" required/></td>
                    <td><input type="number" name="n21" size="3" required/></td>
                    <td><input type="number" name="n22" size="3" required/></td>
                </tr>
            </table>
            </td>
            </tr>
            </table>
            <center><input type="submit" value="Add"/></center>
        </form>  
    </body>
</html>
    <?php 
            $m = array(array());
            $n =array(array());
            $sum= array(array());
            for($i=0;$i<3;$i++) 
            {
                for($j=0;$j<3;$j++)
                {
                    $m[$i][$j]=$_POST['m'.$i.$j];
                    $n[$i][$j]=$_POST['n'.$i.$j];
                    $sum[$i][$j]=$m[$i][$j]+$n[$i][$j];
                }
            }
            echo 'Addition is :'
            echo '<table border=1 style="border-collapse:collaspe">'
            for($i=0;$i<3;$i++)
            {
                echo '<tr>'
                for($j=0;$j<3;$j++)
                {
                    echo '<td>'.$sum[$i][$j].'</td>'
                }
                echo '</tr>'
            }
            echo '</table>'
    ?>

Я получаю ошибку в этом вложенном цикле, где я беру значения из метода post в многомерный массив.

Всего 3 ответа


просто попробуйте изменить следующее

1. измените вашу <form> на

<form action=<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?> method="post">

2. добавить атрибут имени в свою кнопку отправки

<input type="submit" name ="submit" value="Add"/>

3. Введите свой PHP-код внутри

if(isset($_POST['submit'])){
    $m = array(array());
    $n =array(array());
    //your code....
}

надеюсь, что это решит вашу проблему


Немного объяснения. Исходная проблема была вызвана главным образом $_POST['m'.$i.$j] . Во время первого выполнения скрипта php они не были определены, поскольку данные из формы еще не отправлены, и именованные значения просто не были добавлены в переменную $POST .

Проверка if(isset($_POST['submit'])) { основном проверяет, были ли какие-либо формы с данными переданы и выполняются код внутри {...} только если они были.

Поэтому, если вы создадите код

if(isset($_POST['submit'])){
//Your original php code goes here
}

он будет работать, потому что ваш код будет выполняться только при отправке формы.

Это не очень хорошее объяснение, но это лучшее, что я могу сделать


Я получаю неопределенную ошибку индекса для многомерного массива в описании php: ваш код прав. Просто инициализируйте массив как foolows. Если снова ошибка occour, то проверьте свою форму

<?php 
      $m = array();
      $n =array();

?>

Есть идеи?

10000