На пхп из коробки сложновато, вы говорите об операции "product" которая является частью комбинаторики.
Вот у меня класс есть, где я это из python портировал:
https://github.com/6562680/support/blob/main/src/X...
Но мне кажется, вам будет сложно разобрать что там написано поэтому я вам простой код напишу под вашу задачу:
$arr = [
['aa', 'bb', 'cc'],
['dd', 'ee', 'ff', 'gg'],
['hh', 'ii'],
];
function _array_product(array $pools) {
$result = [ [] ];
foreach ( $pools as $pool ) {
$resultCurrent = [];
foreach ( $result as $x ) {
foreach ( $pool as $y ) {
$resultCurrent[] = array_merge($x, [ $y ]);
}
}
$result = $resultCurrent;
}
foreach ( $result as $item ) {
yield $item;
}
}
foreach (_array_product($arr) as $val) {
var_dump($val);
}