Php 菲律宾比索–;多维数组和循环

Php 菲律宾比索–;多维数组和循环,php,arrays,loops,multidimensional-array,Php,Arrays,Loops,Multidimensional Array,我有一个收藏书籍的网站;每本书都有自己的信息页面(如) 为了解析我的html页面,我使用了来自 我的php代码是 <?php // include HTML DOM Parser from http://simplehtmldom.sourceforge.net/ include ('simple_html_dom.php'); // make a loop for looking the first ten books for ($i=1; $i<=10; $i++) {

我有一个收藏书籍的网站;每本书都有自己的信息页面(如)

为了解析我的html页面,我使用了来自

我的php代码是

<?php 
//  include HTML DOM Parser from http://simplehtmldom.sourceforge.net/ 
include ('simple_html_dom.php');

// make a loop for looking the first ten books
for ($i=1; $i<=10; $i++)
{

// look a book page by id   
$url = 'http://mybookscollection.com/book.php?iditem='.$i;
$html = file_get_html($url);

// parse the htmls content to get a data
foreach($html->find('div[id=author]') as $element) 
{$author = $element->plaintext;}
foreach($html->find('div[id=title]') as $element)
{$title = $element->src;}
foreach($html->find('div[id=date]') as $element)
{$date = $element->plaintext;}

// put all one book's data in the array "book"
$book = implode(";", array($i, $author, $title, $date));

// HERE NEED TO CREAT A NEW ARRAY "COLLECTION" WHERE PUT ALL "BOOK"'S ARRAY

//use echo to print data in the browser
//echo '<div>'. $book .'</div>';

//write a file with all data
$fp = fopen('result.txt', 'w');
// NORMALY HAVE TO PUT HERE "$COLLECTION" NOT JUST ONE "$BOOK"
fwrite($fp, $book);
fclose($fp); 
}
?>

它工作正常,我得到了所有数据。我的问题是,我无法将更难的(在同一数组“collection”中)每本书的数组放在同一个txt文件中打印所有书籍信息。我知道这是一个关于两个多维数组的问题,但我无法理解。
非常感谢你的帮助

您正在打开每本书的文件。只需在循环之前打开它,然后在循环之后关闭它

<?php 
//  include HTML DOM Parser from http://simplehtmldom.sourceforge.net/ 
include ('simple_html_dom.php');

// make a loop for looking the first ten books
$fp = fopen('result.txt', 'w');
for ($i=1; $i<=10; $i++)
{

    // look a book page by id   
    $url = 'http://mybookscollection.com/book.php?iditem='.$i;
    $html = file_get_html($url);

    // parse the htmls content to get a data
    foreach($html->find('div[id=author]') as $element) 
    {$author = $element->plaintext;}
    foreach($html->find('div[id=title]') as $element)
    {$title = $element->src;}
    foreach($html->find('div[id=date]') as $element)
    {$date = $element->plaintext;}

    // put all one book's data in the array "book"
    $book = implode(";", array($i, $author, $title, $date));

    fwrite($fp, $book);
    fwrite($fp, "\n"); # write a newline
}
fclose($fp); 
?>
所以你的意思是:

// collection of all books
// you have to put this line OUTSIDE your loop, so in front of it
$books = array();
//
//add the next book to books collection
// $books[] = $book;
结果:

// your current book code
$book = implode(";", array($i, $author, $title, $date));
//
// add book to books collection
$books[] = $book;
待更正:

现在,您应该在循环外一次性编写文件

或者。。。 只需使用没有集合数组的数据,并将数据“附加”到文件中即可

(有关此信息,请参见“模式”选项
'a'
[plus
b
适用于windows])

初始化数组

$collection=array();
然后在你的循环中

array_push($collection,$book);
您将拥有一系列书籍:)


没错,我想制作一个像$books[]这样的集合数组;我试过了,但没有成功(我想我必须为集合的数组制作一个foreach)。无论如何,谢谢你的“附加”的想法;我将查看手册中的“文件内容”。对于少量书籍,可以将它们全部存储在一个数组中,然后将该数组写入一个文件。但是,即使数据很少,更确切地说是数千本书,您也最好不要收集数组中的所有内容,而是将每本书直接写入(此处:追加)到文件中。
$collection=array();
array_push($collection,$book);