PHP错误分页/目录读取


PHP Error Pagination/Directory Reading

所以我有一个烦人的错误,我的朋友现在不在线帮助我,为什么不问stackerflow呢!

我得到以下错误:

注意:未定义的偏移量:第21行的7 in/home1/username/public_html/foldername/v1/screenshots.php

脚本的作用是读取文件夹并收集该目录中的文件。这个部分是有效的,但我确实遇到了这个烦人的错误,我无法理解。

我认为剧本中正在发生的事情是试图读取不存在的图像。因为我使用了一个分页脚本来回显该目录中的文件。该脚本工作得很好,减去一个尝试读取不存在的文件的错误。有没有我可以告诉脚本说}其他{回声"这里什么都没有…";可以这么说?下面是我使用的完整代码。

编辑:(从.txt文件中提取(

$filearray = array(); if ($fil = opendir("../uploads/")) {
    while (($file = readdir($fil)) !== false) {
if ($file != "." && $file != "..") { $filearray[] = $file;
    }
}
    closedir($fil);
} 
$page = empty($_GET['page']) ? 1 : $_GET['page'];
$num_per_page = 5;
$total_pages = ceil(count($filearray)/$num_per_page);
    for($i = ($page - 1) * $num_per_page; $i < $page * $num_per_page; $i++) {
        echo "<a href='"http://www.url.com/uploads/".$filearray[$i]."'"><img src='"http://www.url.com/uploads/".$filearray[$i]."'" width='"100'" height='"100'" /></a>";
}
$pages = array();
    for($i = 1; $i <= $total_pages; $i++) {
    $pages[] = "<a href='"".$_SERVER['PHP_SELF']."?page=".$i."'">".$i."</a>";
}
echo "<br />Page: ".implode(" ", $pages); 

由于某些原因,我无法将整个代码粘贴到表单中。任何形式的帮助都将非常好。。。

您的问题是试图访问不在数组中的数组值。这很可能是由于您的最后一页没有足够的值而导致的,即错误为7时,您很可能在第2页上只有6个$filearray值。

一个简单的修复方法是检查数组值是否存在

for($i = ($page - 1) * $num_per_page; $i < $page * $num_per_page; $i++) {
  if(isset($filearray[$i])){
    echo "<a href='"http://www.url.com/uploads/".$filearray[$i]."'"><img src='"http://www.url.com/uploads/".$filearray[$i]."'" width='"100'" height='"100'" /></a>";
  }
}

另一种方法是检查您是否有页面的全额,如果没有设置新的最大

$max = ( count($filearray) > ($page * $num_per_page) ) ? $page * $num_per_page : count($filearray); // if size of $filearray is larger than the page*numb_per_page set max to page*numb_per_page else set it to the size of $filearray
for($i = ($page - 1) * $num_per_page; $i < $max; $i++) {
    echo "<a href='"http://www.url.com/uploads/".$filearray[$i]."'"><img src='"http://www.url.com/uploads/".$filearray[$i]."'" width='"100'" height='"100'" /></a>";
}
for($i = 1; $i <= $total_pages; $i++)

应该是

for($i = 0; $i < $total_pages; $i++)

在PHP中,数组从0开始进行索引,因此具有7个值的数组$pages将具有值$pages[0]、$pages[1]$第[6]页,但不是$pages[7]页。

如果您从1开始计数(假设$total_pages为7(,那么您将尝试查询$pages[1],$pages[2]$pages[6](到目前为止还不错(,$pages[7],这将引发错误,因为数组中没有这样的元素。