3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * 文字列の全パターン出力スクリプト * * @package Output * @version 1.0.0 * @since File available since Release 1.0.0 */ error_reporting(E_ALL); /** * ユーザIDをキーにキャッシュから本の配列を取得する。 * 取得出来ない場合はfalseを返す。 * * @param int $lock ロック桁(12345の内3までが固定の場合、3をロック桁) * @param arra $arr 出力対象文字列の配列化した値 * @param arra $srt $arrの出力順序 * @return array|bool */ function output($lock, $arr, $srt) { global $length; // ロック桁以降の全パターン出力 for($k=$lock; $k < $length; $k++) { // 下桁の2パターンになるまでlock桁を進める if($lock < $length - 3) { output($lock+1, $arr, $srt); } else { // 表示(lockまでと下二桁)x2 for($j=0; $j <= 1; $j++) { for($i=0; $i <= $lock; $i++) { echo $arr[$srt[$i]]; } echo $arr[$srt[$lock + $j + 1]]; echo $arr[$srt[$lock + 2 - $j]]; echo "\n"; } } // ロック桁の値の入れ替え(ロック桁以降でロック桁の次に大きい値) $w = $srt[$lock]; for($i=1;$i <= $length-$lock; $i++) { if (($next_addr = array_search($srt[$lock] + $i, array_slice($srt, $lock))) !== false) { $next_addr += $lock; break; } } $srt[$lock] = $srt[$next_addr]; $srt[$next_addr] = $w; } echo "\n"; } // main $str = 'cba'; // 対象文字列 $length = strlen($str); $arr = str_split($str); $srt = array_keys($arr); output(0, $arr, $srt);
Output for 5.5.0 - 5.5.35, 5.6.0 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
cba cab bca bac acb abc
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 cba cab bca bac acb abc

preferences:
195.05 ms | 402 KiB | 228 Q