2016-11-03 167 views
1

这个错误没有任何意义。下面是代码块和我的解释。PHP在foreach循环中未定义的索引没有意义

<?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个块中注入,但其他变量都不会执行,即使它们在回显语句中的页面上正确打印。

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

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

感谢您的任何帮助。

+0

break标签应该像这样echo $ value ['authorname']。 “
\ n”;?> –

+0

您是否尝试过print_r($ rows)并查看它包含了哪些内容......为此,$ rows必须是一个数组......所有您编写的密钥都必须存在于$ value ... – barudo

+0

由于分级输出正确,并且您生成了8个代码块,因此其他输入不正确的事实表明它们是空的。尝试var_dump($ value)或var_dump($ rows)(或print_r作为barudo建议)来查看变量内容。我的猜测是,你要么不选择数据库中的列,要么选择其他名称。 – zozo

回答

0

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

<?php $cleanauthorname = urldecode($value['authorname']);?>

感谢大家的帮助。