gpt4 book ai didi

php - 如何在 php 中使用 if else 语句将每隔一个数字替换为另一个数字?

转载 作者:行者123 更新时间:2023-12-02 00:23:48 24 4
gpt4 key购买 nike

我有一个数字,用户会将其输入表格 - 12 位数字。每第二个数字都需要替换 - 如果数字是:1 然后变成 52 然后使它成为 13 然后做成 64 然后做成 25 然后做成 76 然后做成 37 然后变成 88 然后变成 40 和 9 保持不变。

举个例子:343608111218 最终会变成 383307121417。

这是我目前正在做的事情的一个例子,但我认为它是冗长的。这只是第一个数字,所以我假设我可以做其他事情?

$_POST['number'] = '343608111218';
preg_match_all('~(\d)~', $_POST['number'], $pregs);

if($pregs[1][1] === "1") {
$one = 5;
}
elseif ($pregs[1][1] === "2"){
$one = 1;
}
elseif ($pregs[1][1] === "3"){
$one = 6;
}
elseif ($pregs[1][1] === "4"){
$one = 2;
}
elseif ($pregs[1][1] === "5"){
$one = 7;
}
elseif ($pregs[1][1] === "6"){
$one = 3;
}
elseif ($pregs[1][1] === "7"){
$one = 8;
}
elseif ($pregs[1][1] === "8"){
$one = 4;
}
$rep1 = (array_replace($pregs[1],array(1=>$one)));

如果有什么方法可以减少代码量,我将不胜感激。谢谢。

最佳答案

一种方法是使用 preg_replace_callback ,连续传递 2 位数字的匹配项并使用 strtr 适本地替换第二位数字:

$_POST['number'] = '343608111218';

echo preg_replace_callback('~(\d)(\d)~', function ($m) {
return $m[1] . strtr($m[2], '12345678', '51627384');
}, $_POST['number']);

输出:

323304151114

这是基于您提供的关于如何进行替换的描述。但是,如果您的预期输出反射(reflect)了进行替换的正确方法,则替换必须是相反的,这只是将参数顺序更改为 strtr 的问题:

echo preg_replace_callback('~(\d)(\d)~', function ($m) {
return $m[1] . strtr($m[2], '51627384', '12345678');
}, $_POST['number']);

输出:

383307121417

Demo on 3v4l.org

关于php - 如何在 php 中使用 if else 语句将每隔一个数字替换为另一个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54549110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com