Можно ли объединить 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,
→ Ссылка