数组回显问题
Issue with array echo
我正在尝试以 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,$b,$array['userName']);
$a=$a+58;
$x++;
}elseif($x>=5 && $x<10){
if($a>290){$a=5;}
$b=100;
$pdf->Image('abc.png',$a,$b,-300);
$pdf->SetFont('Arial', '', 9);
$pdf->Text($a,$b,$array['userName']);
$a=$a+58;
$x++;
}else{
$x=0;
$a=5;
$b=5;
$pdf->AddPage();
}
}
$pdf->Output();
?>
我知道这个问题是因为我正在使用 else 语句,但我不确定如何解决它。
这里是针对您这个问题的快速而简短的解决方案。您还必须同时使用小于和等于两者。请更新您的代码行:
}elseif($x>=5 && $x<=10){
谢谢!
当您的代码中出现第 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,$b,$array['userName']);
$a=$a+58;
$x++;
}
我正在尝试以 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,$b,$array['userName']);
$a=$a+58;
$x++;
}elseif($x>=5 && $x<10){
if($a>290){$a=5;}
$b=100;
$pdf->Image('abc.png',$a,$b,-300);
$pdf->SetFont('Arial', '', 9);
$pdf->Text($a,$b,$array['userName']);
$a=$a+58;
$x++;
}else{
$x=0;
$a=5;
$b=5;
$pdf->AddPage();
}
}
$pdf->Output();
?>
我知道这个问题是因为我正在使用 else 语句,但我不确定如何解决它。
这里是针对您这个问题的快速而简短的解决方案。您还必须同时使用小于和等于两者。请更新您的代码行:
}elseif($x>=5 && $x<=10){
谢谢!
当您的代码中出现第 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,$b,$array['userName']);
$a=$a+58;
$x++;
}