我尝试将动态生成的变量$title
和$price
添加到数组$list
。
这在一定程度上起作用。代码创建一个带有键的数组,它们具有标题和价格值。
价格值是正确的,每个键都不同。但是,似乎只添加了第一个title
结果,创建了以下数组(相同的标题直到键30)
[0]=> array(2) { ["title"]=> string(57) "Gibson Les Paul ** Nr.1 Gibson dealer ** 18 gitaarwinkels" ["price"]=> string(25) " € 300,00 " } [1]=> array(2) { ["title"]=> string(57) "Gibson Les Paul ** Nr.1 Gibson dealer ** 18 gitaarwinkels" ["price"]=> string(25) " € 100,00 " }
查看代码我认为这是因为第一个foreach循环只执行第二个。
我知道$title
的正确值是存在的,因为当我像这样隔离标题foreach循环时:
foreach ($titlehit as $titles) {
$title = $titles->nodeValue;
echo "$title";
}
显示30个不同的$title
结果
$url = "https://url.com";
$html = new DOMDocument();
@$html->loadHtmlFile($url);
$xpath = new DOMXPath($html);
$titlehit = $xpath->query("//span[@class='mp-listing-title']");
$pricehit = $xpath->query("//span[@class='price-new']");
$list = array();
$i = 0;
foreach ($titlehit as $titles) {
foreach ($pricehit as $prices) {
if ($i >=5 && $i <=35) {
$title = $titles->nodeValue;
$price = $prices->nodeValue;
$list[] = array(
'title' => $title,
'price' => $price
);
}
$i++;
}
}
如何让数组$list
同时保存正确的标题和价格值?谢谢你的帮助。
答案 0 :(得分:0)
这里的代码不够确切,但看起来你需要在$i
循环的每次迭代中重置迭代器foreach
:
$list = array();
foreach ($titlehit as $titles) {
$i = 0;
foreach ($pricehit as $prices) {
if ($i >=5 && $i <=35) {
$title = $titles->nodeValue;
$price = $prices->nodeValue;
$list[] = array(
'title' => $title,
'price' => $price
);
}
$i++;
}
}
答案 1 :(得分:0)
假设每个标题都有一个价格,即相应数组中的标题与价格比率为1:1,您只需要1个循环。
using