使用PHP计算表中的行数,该表包含从CSV文件处理的数据

使用PHP计算表中的行数,该表包含从CSV文件处理的数据,php,count,html-table,import-from-csv,Php,Count,Html Table,Import From Csv,我的问题是,我不知道如何计算从CSV文件中过滤和输出的数据行 我想做以下几点: $author = $_GET['author']; $booklist = array(); $title1 = 'Harry Potter and the Deathly Hallows'; array_push($booklist, $title1); $title2 = 'Harry Potter and the Goblet of Fire'; array_push($booklist, $title2)

我的问题是,我不知道如何计算从CSV文件中过滤和输出的数据行

我想做以下几点:

$author = $_GET['author'];

$booklist = array();
$title1 = 'Harry Potter and the Deathly Hallows';
array_push($booklist, $title1);
$title2 = 'Harry Potter and the Goblet of Fire';
array_push($booklist, $title2);
$title3 = 'Harry Potter and the Prisoner of Azkaban';
array_push($booklist, $title3);

if (strtolower($author) == strtolower('J.K. Rowling')){
    echo '<h1>', ucwords($author), '</h1>';
    echo "<p>" . $title1 . "</p>";
    echo "<p>" . $title2 . "</p>";
    echo "<p>" . $title3 . "</p>";
    $number = count($booklist);
    echo "<p>We have $number of $author 's books.</p>";
}
但是,我的问题是,我的值来自CSV文件,并且正在输出的数据已被IF语句过滤

CSV文件包含如下值:

姓名、作者、isbn、价格
姓名、作者、isbn、价格
姓名、作者、isbn、价格
姓名、作者、isbn、价格
到目前为止,我所做的工作如下:

<?php
$author = $_GET['author'];

echo '<h1>', ucwords($author), '</h1>';
echo '<table border=1>'; //start table
$handle = fopen("books.csv", "r");

while (($books = fgetcsv($handle)) !== FALSE) {  
    list($bookname, $bookauthor, $bookisbn, $bookprice) = $books;

    if (strtolower ($author)==strtolower($bookauthor)) {
        $booklist = array();
        array_push($booklist, $bookname);
        $number = count($booklist);
        echo '<tr><td>',$bookname, //names
        '</td><td>',$bookauthor, //authors
        '</td><td>',$bookisbn, //ISBN
        '</td><td>',$bookprice, //price
        '</td></tr>';
    }
}
fclose($handle);
echo '</table>'; //end table
echo '<p> There are ', $number, ' books by this author. </p>';
?>
这似乎不算数


我不是PHP高手,因此非常感谢您的帮助。

您每次都在通过循环重新说明
$booklist
。把它移到圈外,你应该会很好

$booklist = array(); //move here
while (($books = fgetcsv($handle)) !== FALSE) {  
list($bookname, $bookauthor, $bookisbn, $bookprice) = $books;

if (strtolower ($author)==strtolower($bookauthor))
 {
   array_push($booklist, $bookname);
   $number = count($booklist);
   echo '<tr><td>',$bookname, //names
   '</td><td>',$bookauthor, //authors
   '</td><td>',$bookisbn, //ISBN
   '</td><td>',$bookprice, //price
   '</td></tr>';
}
}
$booklist=array()//搬过来
而(($books=fgetcsv($handle))!==FALSE){
列表($bookname、$bookauthor、$bookisbn、$bookprice)=$books;
if(strtolower($author)=strtolower($bookauthor))
{
数组推送($booklist,$bookname);
$number=计数($booklist);
回显“”,$bookname,//名称
''$bookauthor,//作者
''$bookisbn,//ISBN
'',$bookprice,//price
'';
}
}

尝试移动下一行

$booklist = array();

到上面的while循环

$number
始终将为1(或未定义则没有)。设置
$number=0,而不是对数组进行计数,然后使用
$number++

您还可以移动$number=count($booklist);在循环之后,如果你每次不重新声明,它不会总是1。啊,我总是犯最简单的错误。谢谢你的快速回复!