PHP:在整数中重新排列数字

PHP:在整数中重新排列数字,php,Php,我有许多15位数字。我需要根据设置的顺序重新排列每个数字中的数字,以隐藏复合标识符。例如:将12345678913456转换为223134897616545 我想到的方法是: 1) Extract each digit using $array = str_split($int) 2) Create a new array with required order from $array above 但这就是我被困的地方。如何将数组的所有数字合并为一个整数?这也是一种有效的方法吗 我还需要知道它

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

我想到的方法是:

1) Extract each digit using $array = str_split($int)
2) Create a new array with required order from $array above
但这就是我被困的地方。如何将数组的所有数字合并为一个整数?这也是一种有效的方法吗


我还需要知道它被洗牌的顺序,以便检索原始数字。

将数组内爆并将其转换为整数


(int)impode(“”,$array)
您已经走了一半。您可以使用或:

我随机得到这个:

574146563298123

结果是字符串。您可以通过类型转换转换为int:
echo(int)join($no\u arr)

另一种可能更少行的方法:

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

警告:这没有错误处理,很容易弄乱索引并产生错误,因为

可能
爆炸
uasort
内爆
以创建一个字符串返回
0+连接(''.$array)
这很好,但我不能使用shuffle,因为我需要知道它被洗牌的顺序,以便检索原始编号。您有什么方法提供顺序吗?还是逻辑?@FBP:我想问题已经从你的评论中改变了。@Thamilan是的,我可以定义我自己的顺序。
$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;