<?php
$in=array($d1, $d2, $d3);
$c = new combo($in);
class combo{
public $items;
public $result;
function __construct( $items){
$this->items= $items;
$this->expand('', 0);
}
function expand( $prefix, $index){
if ($index==count($this->items)){ $this->result[]=$prefix;
return;
}
//empty case
$this->expand($prefix, $index+1);
//combinate
foreach($this->items[$index] as $item){
$this->expand($prefix.$item, $index+1);
}
}
}
PD9waHAKIAokZDEgPSByYW5nZSgiQSIsICJDIik7CiRkMiA9IHJhbmdlKCIxIiwgIjMiKTsKJGQzID0gcmFuZ2UoIlgiLCAiWSIpOwogCiRpbj1hcnJheSgkZDEsICRkMiwgJGQzKTsKIAokYyA9IG5ldyBjb21ibygkaW4pOwpwcmludF9yKCRjLT5yZXN1bHQpOwogCmNsYXNzIGNvbWJvewogIHB1YmxpYyAkaXRlbXM7CiAgcHVibGljICRyZXN1bHQ7CiAKICBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJGl0ZW1zKXsKICAgICR0aGlzLT5pdGVtcz0gJGl0ZW1zOwogICAgJHJlc3VsdD1hcnJheSgpOwogICAgJHRoaXMtPmV4cGFuZCgnJywgMCk7CiAgfQogIGZ1bmN0aW9uIGV4cGFuZCggJHByZWZpeCwgJGluZGV4KXsKICAgIGlmICgkaW5kZXg9PWNvdW50KCR0aGlzLT5pdGVtcykpewogICAgICAkdGhpcy0+cmVzdWx0W109JHByZWZpeDsKICAgICAgcmV0dXJuOwogICAgfQogICAgLy9lbXB0eSBjYXNlCiAgICAkdGhpcy0+ZXhwYW5kKCRwcmVmaXgsICRpbmRleCsxKTsKICAgIC8vY29tYmluYXRlCiAgICBmb3JlYWNoKCR0aGlzLT5pdGVtc1skaW5kZXhdIGFzICRpdGVtKXsKICAgICAgJHRoaXMtPmV4cGFuZCgkcHJlZml4LiRpdGVtLCAkaW5kZXgrMSk7CiAgICB9CiAgICAKICB9CiAKfQ==