title: PHP how to reuse a function from a clean state
body: <p>`I have a function called lets say calculate; what i want to do is run some loops with in the function calculating an outcome. at times this function does fail as it will get stuck in a loop, so iv got it covered to exit the loop but my problem is i want to restart this function and hope it come out with an outcome if not i will try again... on average the request does not have an outcome around 1 in 20, i need to restart the function from a clean slate.</p>
  
  <p>i have tried to unset all the vars before i rerun the process with out success.please note this function will fail at times from the information handed to the process, un avoidable so 
  when this accurs i just want to rerun the function automatically to generate an outcome.</p>
  
  <p><a href="http://www.gamezslave.com/test/DynamicSlots.swf" rel="nofollow">http://www.gamezslave.com/test/DynamicSlots.swf</a> this is my test prototype give you an idea
  sometimes you refresh it will error because of this factor.</p>
  
  <pre><code>&lt;?php
  $checker = 0; // if i cant get a result i could use this will tick up until condition
  function shuffleArray($myArray) {
      $value_count = array_count_values($myArray);
      $last_value = $myArray[count($myArray) - 1];
      unset($myArray[count($myArray) - 1]);
      $shuffle = array();
      $last = false;
  
      while (count($myArray) &gt; 0) {
          $keys = array_keys($myArray);
          $i = round(rand(0, count($keys) - 1));
          while ($last === $myArray[$keys[$i]] ) {
              $i = round(rand(0, count($keys) - 1));
      echo "stuck";
              $checker++;
      if($checker&gt;10){
          echo " Too many checks so die, and restart process ";
          return false;
          bob; // this is the check function to goto and restart
      }
          }
          $shuffle[] = $myArray[$keys[$i]];
          $last = $myArray[$keys[$i]];
          unset($myArray[$keys[$i]]);
      }
  
      if ($last_value === $last) {
          $i = 0;
          foreach($shuffle as $key=&gt;$value) {
              if ($value !== $last_value) {
                  $i = $key;
                  break;
              }
          }
          array_slice($shuffle, $i + 1, 0, $last_value);
      } else {
          $shuffle[] = $last_value;
      }
      return $shuffle;
  }
  
  print_r(shuffleArray(array(1,5,5,3,7,7,7,7))); // just a example
  function bob(){
  if($checker&gt;10){
      $checker = 0;
      shuffleArray();
      echo "bob";
          reset($myArray); // thought this may clean/reset the array i couldnt use
      }
  }
  </code></pre>
  
  <p>The idea this shuffle returns that no two symbols elemts of the same will be next to each other but sometimes at the end of the array as its shuffling randomly im left with bad odds (apple, orange, orange, orange) so what i need to do is resart this process again from start take in mind there is about 10 different item in the array and duplicates of each for example 10 apples ,10 oranges 4 bannanas 3 grapes sometimes the shuffle manages to generate an outcome where im stuck with too many of the same item at the end of the array wich then i need to rerun the script(and this bit is the problem) i dont know how.</p>