function apply() { global $cart; global $rawSequence; global $discount; global $couponExclude; $coupons = array_values(array_merge($cart['coupons']['pre'], $cart['coupons']['post'])); for ($j = 0; $j < count($rawSequence); $j++) { for ($i = 0; $i < count($coupons); $i++) { if ($coupons[$i]['raw_type'] != $rawSequence[$j]) { continue; } switch ($coupons[$i]['type']) { case $discount['STORE_WIDE']: store($cart, json_decode($coupons[$i]['params'], true), $coupons[$i]['raw_type'], $discount['STORE_WIDE']); break; case $discount['CATEGORY_WIDE']: category($cart, json_decode($coupons[$i]['params'], true), $discount['CATEGORY_WIDE']); break; case $discount['BOGO']: bogo($cart, json_decode($coupons[$i]['params'], true), $discount['BOGO'] | $discount['CATEGORY_WIDE']); break; case $discount['GROUP_WISE']: break; default: } array_splice($coupons, $i, 1); $exclude = $couponExclude[$rawSequence[$j]]; for ($k = 0; $k < count($exclude); $k++) { for ($l = 0; $l < count($coupons); $l++) { if ($coupons[$l]['raw_type'] != $exclude[$k]) { continue; } array_splice($coupons, $i, 1); $l--; } } $i = -1; } } return $cart; }
Maurício Sipmann (sipmann@gmail.com) Tipo: sorting Descrição: Ordena um array a fim de ficar em ordem crescente. Complexidade: O(infinito) Dificuldade: facil Referências: http://pt.wikipedia.org/wiki/Bogosort */ function bogo($valores) { $ordenado = false; $certo = $valores; sort($certo); $i = 0; while (!$ordenado) { shuffle($valores); if ($valores == $certo) { $ordenado = true; } $i++; echo "Tentativa " . $i . " <br>"; print_r($ordenado == true ? $valores : ""); } } // Passando um array com valores a serem ordenados bogo(array(3, 5, 2, 1));