Here’s a snippet I created to generate invalid data from a valid key-value array. It’s really handy for testing. Feel free to use it.
/** * Gatling gun takes an array of valid params and returns every * combination of invalid data caused by blanking out individual params. * * Example: * * $validData = array('firstName' => 'Gatling', * 'lastName' => 'Gun', * 'age' => 12); * * $ggData = gatlingGun($validData); * * $ggData = array( * array('firstName' => '', 'lastName' => '', 'age' => ''), * array('firstName' => '', 'lastName' => '', 'age' => 12), * array('firstName' => '', 'lastName' => 'Gun', 'age' => ''), * array('firstName' => '', 'lastName' => 'Gun', 'age' => 12), * array('firstName' => 'Gatling', 'lastName' => '', 'age' => ''), * array('firstName' => 'Gatling', 'lastName' => '', 'age' => 12), * array('firstName' => 'Gatling', 'lastName' => 'Gun', 'age' => '') * ); * * * @param array $validData * @return array * */ function gatlingGun($validData) { $original = $validData; $invalidCombinations = array(); $max = count($original); $keys = array_keys($original); $combinations = pow(2, $max) - 1; for ($i = 0; $i < $combinations; $i++) { $tmp = array(); $j = count($keys) - 1; foreach ($keys as $k => $key) { $tmp[$key] = (($i & pow(2,$j)) == 0) ? '' : $original[$key]; $j--; } $invalidCombinations[] = $tmp; } return $invalidCombinations; }
Just be careful, the number of combinations it comes up with is 2^n - 1
. So the number of invalid combinations from an array with 10 key-value pairs will quickly balloon to 1023.
Do drop me a line to let me know if this has been helpful for you.