Неопределенный ключ массива в PHP

это результат

Я хочу отображать все данные в таблицах по дате. Я храню данные из базы данных в массиве для отображения. Но я получил предупреждение об ошибке: неопределенный ключ массива. Ниже мой код для хранения данных в массиве.

 include("db.php");

                            if (isset($_GET['from_date']) && isset($_GET['to_date'])){
                                
                                global $conn;
                                $from_date = $_GET['from_date'];
                                $to_date = $_GET['to_date'];

                                $stmt = $connection->prepare("
                                SELECT 
                                    date(datetime_entry_queue) AS Date,
                                    duration_wait
                                    FROM call_entry
                                    WHERE status='abandonada'
                                    AND date(datetime_entry_queue) BETWEEN '$from_date' AND '$to_date'
                                ");

                                
                                $stmt->execute();
                                $result = $stmt->get_result();

                                $Data = null;

                                while($row = $result->fetch_assoc()) {


                                    if ($row['duration_wait'] >= 0 AND ($row['duration_wait'] <= 30))
                                    {
                                        $Data[$row['Date']]['0-30'] += 1;

                                    }
                                    else if ($row['duration_wait'] >= 31 AND ($row['duration_wait'] <= 60))
                                    {
                                        $Data[$row['Date']]['31-60'] += 1;
                                    }
                                    else if ($row['duration_wait'] >= 61 AND ($row['duration_wait'] <= 120))
                                    {
                                        $Data[$row['Date']]['61-120'] += 1;
                                    }
                                    else
                                    {
                                        $Data[$row['Date']]['>120'] += 1;
                                    }
                                }

                                echo "<pre>";
                                print_r($Data);
                                echo "</pre>";

                                $stmt->close();

                               
                            }

Вот как я возвращаю данные в таблице на своей странице:

<?php
                            
                            foreach($Data AS $Date => $Total)
                            {

                            ?>
                                <tr>
                                    <td><?php echo $Date;?></td>
                                    <td><?php echo $Total["0-30"];?></td>
                                    <td><?php echo $Total['31-60'];?></td>
                                    <td><?php echo $Total['61-120'];?></td>
                                    <td><?php echo $Total['>120'];?></td>
                                    
                                   
                                </tr>
                            <?php
                            }
                            
                            ?>

Я уже выполнил свой запрос, и он показывает все данные, которые мне нужны.

Вы знаете, в какой строке возникает предупреждение? Это помогло бы нам помочь вам :)

Gowire 20.11.2022 15:04

Вы можете использовать оператор ??, когда элемент массива отсутствует. Например, вместо этого напишите <?php echo ($Total["0-30"] ?? "None"));?>. Это вернет «Нет», если элемент массива не найден. Я предполагаю, что ваш код не заполнит массив данных всеми возможными ключами...

Gowire 20.11.2022 15:09

@Gowire спасибо за ответ, я уже отредактировал свой пост, вы можете увидеть вывод

Yamin 20.11.2022 15:10

@Gowire Почему элемент не найден, когда я уже определил ключ в операторе if, и почему он не заполняет массив данных? Извините, я все еще в процессе изучения массива, поэтому я был бы признателен, если бы вы могли объяснить детали :)

Yamin 20.11.2022 15:21
Отношения &quot;многие ко многим&quot; в Laravel с методами присоединения и отсоединения
Отношения &quot;многие ко многим&quot; в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
Тенденции развития PHP - почему люди выбирают его?
Тенденции развития PHP - почему люди выбирают его?
Framework ранее был известен как Personal Home Page, а затем был переименован в Hypertext Preprocessor. Это наиболее широко используемый язык для...
Принцип подстановки Лискова
Принцип подстановки Лискова
Принцип подстановки Лискова (LSP) - это принцип объектно-ориентированного программирования, который гласит, что объекты суперкласса должны иметь...
0
4
611
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема здесь должна заключаться в использовании оператора "+=".

Можно присвоить значение несуществующим элементам массива, но "+=" сначала считывает элемент (перед увеличением).

Чтение несуществующих элементов приведет к предупреждениям.

@Yamin: Было бы полезно, если бы вы отредактировали свой вопрос, чтобы просто спросить об этом и создать минимальный пример, демонстрирующий, что и что не работает для вас (и каков будет желаемый результат). Сравните stackoverflow.com/help/minimal-reproducible-example

hakre 20.11.2022 17:05

Другие вопросы по теме