我有很多15位数字。我需要根据设置顺序重新排列每个数字中的数字以隐藏复合标识符。例如:将123456789123456转换为223134897616545
我想到的方法是:
1) Extract each digit using $array = str_split($int)
2) Create a new array with required order from $array above
但这里是我被困的地方。如何将数组的所有数字组合成单个整数?这也是一种有效的方法吗?
另外,我需要知道它被洗牌的顺序,以便检索原始号码。
答案 0 :(得分:0)
内爆数组并将其转换为int。
(int) impode('',$array)
答案 1 :(得分:0)
$no = 123456789123456;
$no_arr = str_split($no);
shuffle($no_arr);
echo join($no_arr); // implode($no_arr);
我随机得到了这个:
574146563298123
结果是字符串。您可以通过类型转换转换为int:echo (int) join($no_arr);
答案 2 :(得分:0)
另一种可能更少的方法:
$num = 1234;
$stringOriginal = (string) $num;
// build the new string, apply your algorithm for that as needed
$stringNew = $stringOriginal[1] . $stringOriginal[0] . $stringOriginal[3] . $stringOriginal[2];
$numNew = (int) $stringNew;
警告:这没有错误处理,很容易弄乱索引并因此而出错