Можно ли объединить 3 foreach в один?
$html = file_get_html(''.$result[]=$row.'?p='.$i.'');
foreach($html->find('span img') as $a)
echo $a->outertext . '<br>';
foreach($html->find('a.product--title') as $b)
echo $b->innertext . '<br>';
foreach($html->find('span.price--default') as $c)
echo $c->innertext . '<br>';
Пишу парсер. И мне нужно, чтобы контент выводился в таком формате.
$a1
$b1
$c1
$a2
$b2
$c2
Сейчас контент выводится.
$a1
$a2
$a3
$b1
$b2
$b3
Поэтому я и подумал можно ли как-то объединить все foreach в один?
Ответы (1 шт):
Автор решения: vp_arth
→ Ссылка
Что-то вроде:
$findRes = [
['a1', 'a2', 'a3'], // $html->find('span img')
['b1', 'b2', 'b3'], // $html->find('a.product--title')
['c1', 'c2'], // $html->find('span.price--default')
];
foreach ($findRes[0] as $i => $a) {
$b = $findRes[1][$i] ?? null;
$c = $findRes[2][$i] ?? null;
echo $a, ', ', $b, ', ', $c, PHP_EOL;
}
// Или, по совету @teran:
foreach (array_map(null, ...$findRes) as [$a, $b, $c]) {
echo $a, ', ', $b, ', ', $c, PHP_EOL;
}
// a1, b1, c1
// a2, b2, c2
// a3, b3,