【问题标题】:Undefined Array Key in PHP [duplicate]PHP 中未定义的数组键 [重复]
【发布时间】:2022-11-20 23:54:54
【问题描述】:

这是输出

我想根据日期显示表格中的所有数据。我将数据库中的数据存储在要显示的数组中。但是我收到错误警告:未定义的数组键。下面是我将数据存储在数组中的代码。

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

我已经运行了查询,它显示了我需要的所有数据。

如果我没有选择任何日期,这是输出

我不明白为什么输出是这样的。数据显示不正确。

【问题讨论】:

  • 你知道警告发生在哪一行吗?这将有助于我们帮助您 :)
  • 当缺少数组元素时,您可以使用 ?? 运算符。例如,改为写 &lt;?php echo ($Total["0-30"] ?? "None"));?&gt;。如果未找到数组元素,这将返回“无”。我猜你的代码不会用所有可能的键填充 Data 数组......
  • @Gowire 谢谢你的回复我已经编辑了我的帖子,你可以看到输出
  • @Gowire 为什么当我已经在 if 语句中定义了键时找不到元素,为什么它不会填充数据数组?对不起,我还在学习数组,所以如果你能解释细节,我将不胜感激:)

标签: php mysql arrays html-table


【解决方案1】:

这里的问题应该是使用“+=”语句。

给不存在的数组元素赋值是没问题的,但是“+=”先元素(递增之前)。

读取不存在的元素将导致警告。

【讨论】:

  • 感谢您的答复。我编辑了我的帖子。我不明白为什么某些日期的值是正确的,但其余的是错误的。根据您的回答,我应该定义元素吗?关于 += 语句我应该怎么做?
  • @Yamin:这将很有帮助,然后您将编辑您的问题以仅询问它并创建一个最小的示例来演示什么对您有用,什么对您不起作用(以及期望的结果是什么)。比较stackoverflow.com/help/minimal-reproducible-example
猜你喜欢
  • 2022-12-04
  • 1970-01-01
  • 2021-07-01
  • 2019-10-22
  • 1970-01-01
  • 2016-02-08
  • 1970-01-01
  • 2016-04-06
  • 2017-11-22
相关资源
最近更新 更多