将DOM文档解析为数组php

时间:2013-05-30 13:34:29

标签: php dom domxpath

* 我想要的是,DOM不是在“foreach”循环中逐行打印结果,而是将其存储在数组中....所以它应该看起来像一个列表,即 “[0] 16GB USB记忆棒”“[1]电脑显示器”“[2]无线键盘” 等等 到目前为止我有这个,但它只存储每个循环的最后一个值..请帮忙! *

$html = new DOMDocument();
@$html->loadHtmlFile('some online shop');
$xpath = new DOMXPath($html);
$nodelist = $xpath->query( "//div[@class='productname']/p" );

foreach ($nodelist as $n)
    {
        $value = $n->nodeValue;
        $list = array($value);
    }

echo $list[0];

2 个答案:

答案 0 :(得分:6)

那是因为你在每个循环中都覆盖了它。创建一个数组,并添加到该数组:

$list = array();

foreach ($nodelist as $n)
{
    $value = $n->nodeValue;
    $list[] = $value;
}

// Check there's at least one item in the array before accessing it
if (count($list) > 0)
{
    echo $list[0];
}

答案 1 :(得分:1)

您需要了解数组在PHP中的工作方式。你做错了是你在每次迭代时重新声明数组,而不是向它添加更多信息。

$list = array();

foreach ($nodelist as $n) {
    $list[] = $n->nodeValue;
}

var_dump($list);

<强>解释

[]基本上意味着 - 在此数组中添加项目,并自动生成密钥。

我写的foreach相当于这个:

$i = 0;
foreach ($nodelist as $n) {
    $list[$i] = $n->nodeValue;
    $i ++;
}