如何传递数组从Zend的大教堂查询结果表(How to Pass Array from Zend D

2019-10-18 22:26发布

我查询列YEAR,评级为A URL,我要插入这两个到数据库中。 如YEAR RATING 1992年9.2 2000 1999年9 8。 。 。 。 。 。 。 。

所以,我写剧本,如:

$url = 'BLA BLA ';
$data = file_get_contents($url);
$dom = new Zend_Dom_Query($data);
$year = $dom->query('.secondaryInfo');
$rating = $dom->query('.ratingColumn');

如何在数据库中插入两者???

for ( .... What do I have to write here?)

$parse = new Application_Model_Parse();
$parse->createImdb(array(
'rating' => What do I have to write here?
'year' => What do I have to write here?
));

任何帮助将是有益的。

谢谢

Answer 1:

截至解释http://framework.zend.com/manual/1.12/en/zend.dom.query.html

一旦你有一个文件,你可以使用的query()queryXpath()方法; 每个方法将返回一个Zend_Dom_Query_Result对象与任何匹配的节点。

并进一步

如前所述, Zend_Dom_Query_Result同时实现了IteratorCountable ,因此可以在使用foreach()循环以及与所述count()函数。

各种迭代方法将返回PHP的原生DOMElements在这种情况下,这意味着通过它可以访问元素的文本内容nodeValue属性。

假设有在结果对象只有一个项目,尝试

$parse->createImdb(
    array(
        'rating' => $rating->current()->nodeValue
        'year' => $year->current()->nodeValue
    )
);

如果你觉得不舒服的迭代器工作时,你可以使用:

  • iterator_to_array -迭代器复制到一个数组

到,那么,复制迭代到一个数组,然后使用该代替,例如

$rating = iterator_to_array($rating);
$year = iterator_to_array($year);
$parse->createImdb(
    array(
        'rating' => $rating[0]->nodeValue
        'year' => $year[0]->nodeValue
    )
);

如果有多个结果,与一起迭代他们MultipleIterator

$ratingsAndYears = new MultipleIterator();
$ratingsAndYears->attachIterator($rating);
$ratingsAndYears->attachIterator($year);

foreach ($ratingsAndYears as $ratingAndYear) {
    $parse = new Application_Model_Parse();
    $parse->createImdb(
        array(
            'rating' => $ratingAndYear[0]->nodeValue
            'year' => $ratingAndYear[1]->nodeValue
        )
    );

在阿里纳斯, Zend_Dom_Query只是围绕PHP的原生DOM扩展一个瘦包装,如果你知道的XPath ,你并不真正需要的W3选择查询它提供,可与DOM独自做到这一切。



文章来源: How to Pass Array from Zend Dom Query Results to table