je dois simplifier cette méthode avec une récursion pour se débarrasser de la logique métier en double mais je ne peux pas comprendre comment faire:Simplifier cette méthode avec récursion
public function compute()
{
$ret = array();
foreach ($this->_items as $item) {
$ret[] = array($item);
}
foreach ($this->_items as $item) {
foreach ($this->_items as $item2) {
$tmp = array($item, $item2);
if (count($tmp) === count(array_unique($tmp))) {
$ret[] = $tmp;
}
}
}
foreach ($this->_items as $item) {
foreach ($this->_items as $item2) {
foreach ($this->_items as $item3) {
$tmp = array($item, $item2, $item3);
if (count($tmp) === count(array_unique($tmp))) {
$ret[] = $tmp;
}
}
}
}
return $ret;
}
EDIT:
Cette méthode est censé revenir toutes les combinaisons d'éléments du tableau, donc si vous avez tableau comme:
[a, b, c]
Il retournera:
[
[a],
[b],
[c],
[a, b],
[a, c],
[b, a],
[b, c],
[a, b, c],
[a, c, b],
[b, a, c],
[b, c, a],
[c, a, b],
[c, b, a]
]
Quel est le but de votre code? –
Il serait bon pour vous de 'print_r ($ this-> items)' et aussi 'print_r ($ ret)' pour que je puisse comprendre l'entrée et la sortie attendue .... – Baba
@Ofir Baruch J'ai ajouté l'objectif de ce code à ma question. –