Я получаю неопределенную ошибку индекса для многомерного массива в php - PullRequest
0 голосов
/ 30 октября 2018

Я новичок в php, поэтому я пытался написать программу, которая добавляет две матрицы 3х3. Я получаю неопределенную ошибку символа несколько раз в коде 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>';
    ?>

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

Ответы [ 3 ]

0 голосов
/ 30 октября 2018

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

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

Так что если вы сделаете ваш код похожим на

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

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

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

0 голосов
/ 31 октября 2018

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

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

?>
0 голосов
/ 30 октября 2018

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

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....
}

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

...