【问题标题】:PHP Undefined index in foreach loop makes no senseforeach 循环中的 PHP 未定义索引没有意义
【发布时间】:2016-11-03 22:59:15
【问题描述】:

这个错误没有意义。下面是代码块和我的解释。

<?php foreach($rows as $value): ?>
                              <?php   echo $value['authorname'] . "<br />\n";?>
                              <?php   echo $value['title'] . "<br />\n";?>
                              <?php   echo $value['rating'] . "<br />\n";?>
                              <?php   echo $value['imagelocation'] . "<br />\n";?>
                    
                            <div class="block">
                                <div class="row">
                                    <div class="col-md-4 col-md-8">
                                        <div class="widget-block">
                                            <input id="rate1" value="<?php echo $value['rating'];?>" type="number" class="rating" data-max="5" data-min="0"  data-size="sm" data-show-clear="false" readOnly="readOnly">
                                            <a href="<?php echo $value['sellerssite'];?>" target="#"><img class="img-responsive wow fadeInLeftBig animated" data-wow-duration="1.5s" src=<?php echo $value['$imagelocation'];?> alt=<?php echo $value['$authorname'];?>></a>
                                            <br>
                                            <a href="<?php echo $value['sellerssite'];?>" class="btn btn-success" target="_blank">Buy this book</a>
                                        </div>
                                    </div>
                                    <div class="col-md-6 col-md-8">
                                        <div class="section-sub-title">
                                            <article class="section-title-body white">
                                                <h1 class="head-title">Author: <span><?php echo $value['$authorname'];?> -</span> <?php echo $value['$title'];?></h1>
                                                <span class="point-line hidden-xs hidden-sm"></span>
                                                <p>
                                                    <?php echo $value['$review'];?>
                                                </p>
                                            </article>
                                        </div>
                                    </div>
                                </div>   
                            </div>
                        <?php endforeach; ?>

在 foreach 循环开始后的 echo 语句可以很好地打印出每个变量。直到我们深入到 html 才出现问题。

此代码从数据库提供一组数据,然后根据数据量构建 html 代码块。在这种情况下,我要提取 8 条记录,因此此循环会创建此代码块的 8 个副本。令人沮丧的是变量“$rating”在所有 8 个块中注入,但其他变量都没有,即使它们在 echo 语句中正确打印在页面上。

也许是变量中的数据?例如,在解析代码时,评估的第一个变量是 $rating 并且可以工作。下一个是img标签$imagelocation中的src属性,实际值为img\book_covers\TrueConviction.jpg

是 _ 和 .特殊字符并导致问题?我的返回值会有 _ 。 \ 和空格。

感谢您的帮助。

【问题讨论】:

  • break 标签应该像这样 echo $value['authorname'] 。 "\n";?>
  • 您是否尝试过 print_r($rows) 并查看它包含的内容....为了使其工作,$rows 必须是一个数组...您编写的所有这些键都必须存在于 $价值...
  • 因为 rating 输出正确,并且你生成了 8 个代码块,另一个没有正确输出的事实表明它们是空的。尝试 var_dump($value) 或 var_dump($rows) (或 barudo 建议的 print_r)查看变量内容。我的猜测是,您要么不从 db 中选择这些列,要么使用其他名称选择它们。
  • 感谢您的回复,但是正如我上面所说的,所有的 echo 语句都会打印从数据库返回的变量。这就是为什么这如此令人沮丧的原因,因为我回显了打印作者名和图像位置,然后突然出现空的六行代码?没有意义。我觉得问题是变量中的数据是原因,字符 _ \ 。它们是变量中字符串的一部分。
  • 错字:$value['$imagelocation']; 以及此后发现的类似错字。从您的键中删除前缀 $。

标签: php html


【解决方案1】:

我是对的,它是变量中的数据。答案是 urldecode。这解决了我的问题。我对所有变量都这样做了。

&lt;?php   $cleanauthorname = urldecode($value['authorname']);?&gt;

感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    相关资源
    最近更新 更多