3v4l.org

run code in 300+ PHP versions simultaneously
<?php // Returns the total number of $count-length strings generatable from $letters. function getPermCount($letters, $count) { $result = 1; // k characters from a set of n has n!/(n-k)! possible combinations for($i = strlen($letters) - $count + 1; $i <= strlen($letters); $i++) { $result *= $i; } return $result; } // Decodes $index to a $count-length string from $letters, no repeat chars. function getPerm($letters, $count, $index) { $result = ''; for($i = 0; $i < $count; $i++) { $pos = $index % strlen($letters); $result .= $letters[$pos]; $index = ($index-$pos)/strlen($letters); $letters = substr($letters, 0, $pos) . substr($letters, $pos+1); } return $result; } $letters = 'abcd'; echo '2 letters from 4:<br>'; for($i = 0; $i < getPermCount($letters, 2); $i++) echo getPerm($letters, 2, $i).' '; echo '<br>3 letters from 4:\n'; for($i = 0; $i < getPermCount($letters, 3); $i++) echo getPerm($letters, 3, $i). " ";
Output for git.master, git.master_jit, rfc.property-hooks
2 letters from 4:<br>ab ba ca da ac bc cb db ad bd cd dc <br>3 letters from 4:\nabc bac cab dab acb bca cba dba adb bda cda dca abd bad cad dac acd bcd cbd dbc adc bdc cdb dcb

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
53.52 ms | 401 KiB | 8 Q