PHP:重整整数的数字

时间:2017-03-28 10:14:56

标签: php

我有很多15位数字。我需要根据设置顺序重新排列每个数字中的数字以隐藏复合标识符。例如:将123456789123456转换为223134897616545

我想到的方法是:

1) Extract each digit using $array = str_split($int)
2) Create a new array with required order from $array above

但这里是我被困的地方。如何将数组的所有数字组合成单个整数?这也是一种有效的方法吗?

另外,我需要知道它被洗牌的顺序,以便检索原始号码。

3 个答案:

答案 0 :(得分:0)

内爆数组并将其转换为int。

(int) impode('',$array)

答案 1 :(得分:0)

你已经走了一半。您可以使用joinimplode

$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;

警告:这没有错误处理,很容易弄乱索引并因此而出错