数组回声问题

问题描述

我正在尝试以 pdf 格式输出数据。最多 10 个值代码工作正常,但不显示第 11 个值,而是从第 12 个值继续。请帮我修复它。

<?PHP
$result=MysqLi_query($conn,"SELECT * FROM TABLE");
$Items = array();
while ($row = MysqLi_fetch_assoc($result)) {
  $Items[] = $row;
}

$x=0;
$y=0;
$a=5;
$b=5;

require('../pdf/alphapdf.PHP');
$pdf = new AlphaPDF();

$pdf->AddPage();
$title = 'Demo';
$pdf->SetTitle($title);
$pdf->Setlinewidth(1.5);
$pdf->SetAlpha(1);

foreach ($Items as $array) {
if($x<5){
    $pdf->Image('abc.png',$a,$b,-300);
    $pdf->SetFont('Arial','',9);
    $pdf->Text($a,$array['userName']);
    $a=$a+58;
    $x++;
}elseif($x>=5 && $x<10){
    if($a>290){$a=5;}
    $b=100;
    $pdf->Image('abc.png',$array['userName']);
    $a=$a+58;
    $x++;
}else{
    $x=0;
    $a=5;
    $b=5;
    $pdf->AddPage();
 }
}
$pdf->Output();
?>

我知道这个问题是因为我使用的 else 语句,但我不知道如何解决它。

解决方法

当第 11 条记录出现在您的代码中时,您的代码将转到 else 部分,在那里您编写的代码只是为了创建一个新页面,没有别的。这就是跳过第 11 条记录的原因。

您还多次使用重复代码,实际上并不需要,试试这样:

$x=0;
$a=5;
$b=5;
foreach ($Items as $array) {

    if($x %10 == 0 ){ // after each 10 record add new page
        $x=0;
        $a=5;
        $b=5;
        $pdf->AddPage();
    }
    //add entries irrespective of pages.
    $pdf->Image('abc.png',$a,$b,-300);
    $pdf->SetFont('Arial','',9);
    $pdf->Text($a,$array['userName']);
    $a=$a+58;
    $x++;
}
,

这是针对您的这个问题的非常快速和简短的解决方案。您还必须使用小于和等于两者。请更新您的代码行:

}elseif($x>=5 && $x<=10){

谢谢!