【问题标题】:Pagination using associtive array使用关联数组进行分页
【发布时间】:2013-01-14 19:17:23
【问题描述】:

我有以下脚本,它将对数组的结果进行分页...但仅在使用数字键值时。可以修改此脚本以使用键的字符串值与关联数组一起使用吗?我需要这样做以按字母顺序对数组进行排序,最终目的是按字母顺序进行分页。

到此为止的脚本。

$my_array = array(0 => 'a', 1 => 'b', 2 => 'c'); // THIS WORKS FINE

//$my_array = array('a' => 'a', 'b' =>'b', 'c'=>'c'); // THIS DOESN'T WORK

$arr = $my_array; 

$rows_per_page = 1;

$numrows = count($arr);

// Calculate number of $lastpage
$lastpage = ceil($numrows/$rows_per_page);

// condition inputs/set default
if (isset($_GET['pageno'])) {
   $pageno = $_GET['pageno'];
} else {
   $pageno = 1;
}

// validate/limit requested $pageno
$pageno = (int)$pageno;
if ($pageno > $lastpage) {
   $pageno = $lastpage;
}
if ($pageno < 1) {
   $pageno = 1;
}

// Find start and end array index that corresponds to the requested pageno
$start = ($pageno - 1) * $rows_per_page;
$end = $start + $rows_per_page -1;

// limit $end to highest array index
if($end > $numrows - 1){
    $end = $numrows - 1;
}

// display array from $start to $end
for($i = $start;$i <= $end;$i++){
    echo $arr[$i] . '<br />';
}
echo "<p style='text-align:center;'>";

// first/prev pagination hyperlinks
if ($pageno == 1) {
   echo " FIRST PREV ";
} else {
   echo " <a href='?pageno=1'>FIRST</a> ";
   $prevpage = $pageno-1;
   echo " <a href='?pageno=$prevpage'>PREV</a> ";
}

// Display current page or pages
echo " ( Page $pageno of $lastpage ) ";

// next/last pagination hyperlinks
if ($pageno == $lastpage) {
   echo " NEXT LAST ";
} else {
   $nextpage = $pageno+1;
   echo " <a href='?pageno=$nextpage'>NEXT</a> ";
   echo " <a href='?pageno=$lastpage'>LAST</a> ";
}

echo "</p>";
?>

【问题讨论】:

  • "是否可以修改此脚本以使用键的字符串值与关联数组一起使用?"是的,它可以
  • 尝试使用$my_array = array('a' =&gt; 'a', 'b' =&gt;'b', 'c'=&gt;'c'); 。并开启通知和警告的错误通知。你会得到一个错误。
  • 提示:问题出在这一行 for($i = $start;$i
  • @Lex - 抱歉,我只是出于示例目的草草写下了这些数组......我的实际数组很好;)我会在我的问题中修改这个。 Pankrates - 是的,我虽然如此......但我的菜鸟技能水平无法解决什么......也许你可以更具体一些?请问?
  • 为什么投反对票?我问了一个问题,投反对票是什么?

标签: php pagination


【解决方案1】:

您是通过数字索引引用关联数组,替换

for($i = $start;$i <= $end;$i++){
    echo $arr[$i] . '<br />';
}

与:

$arr_keys = array_keys($arr);
for($i = $start;$i <= $end;$i++){
    echo '-'.$arr[$arr_keys[$i]] . '<br />';
}

【讨论】:

  • 非常感谢.. 事实证明,我确实知道问题出在哪里,但是在问我的问题之前尝试了类似的东西后无法正确使用语法。再次感谢您让我正确;)
猜你喜欢
  • 2010-12-08
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 2017-10-09
  • 1970-01-01
  • 2015-02-27
相关资源
最近更新 更多