我需要帮助,首先可能有重复,但我想我已经在搜索了,没有找到我期望和想要的东西。
我对我的问题感到困惑。我想要的是将数字格式转换为字符串格式,
我有一个名为的字符串
$pricecode = 'ABCDEFGHIJ';
类似于:
EFGHIJ用于编号1234567890
表示从0到9的数字,例如:
$price = 1500;
所以我需要价格替换并成为:
AEJJ
我正在尝试创建如下代码:
$priceCode = 'ABCDEFGHIJ';
$price = 1500;
$lenPrice = strlen($price);
$priceconveert = '';
$i=1;
$x=0;
while($i<=$lenPrice){
$number = substr($Price,$x,1);
if($number == 1){
$priceconveert .= substr($priceCode,$x,1);
}else if($number == 2){
$priceconveert .= substr($priceCode,$x,1);
}else if($number == 3){
$priceconveert .= substr($priceCode,$x,1);
}else if($number == 4){
$priceconveert .= substr($priceCode,$x,1);
}else if($number == 5){
$priceconveert .= substr($priceCode,$x,1);
}else if($number == 6){
$priceconveert .= substr($priceCode,$x,1);
}else if($number == 7){
$priceconveert .= substr($priceCode,$x,1);
}else if($number == 8){
$priceconveert .= substr($priceCode,$x,1);
}else if($number == 9){
$priceconveert .= substr($priceCode,$x,1);
}else if($number == 0){
$priceconveert .= substr($priceCode,$x,1);
}
$i++;
$x++;
}
echo $priceconveert;
带代码的住所应该有结果
AEJJ
但我运气不好,结果被打乱了。没有什么比AEJJ和我更喜欢的了,如果和可以像 我认为如果使用数组会很好,但我不知道如何做到这一点,因为 请帮帮我,教我如何解决这个问题。非常感谢。我为我的语言感到抱歉。 感谢AEJ2
一样做,因为在1500
后面有2个零(00),并且00
的价格代码是JJ
,但make像J2
一样短,或者如果有价格15000
,它将是J3,因为有3个零(000)numeric 1500 into 4 array
和priceCode into 10 array
是分开的。我完全弄糊涂了。
试试这个,
$letters = array('A', 'B','C','D','E','F','G','H','I','J');
$numbers = array('1', '2','3','4','5','6','7','8','9','0');
$text = '1500';
$output = str_replace($numbers,$letters, $text);
echo $output;
输出
AEJJ
DeEMO
要取回号码
$letters = array('A', 'B','C','D','E','F','G','H','I','J');
$numbers = array('1', '2','3','4','5','6','7','8','9','0');
$text = 'AEJJ';
$output = str_replace($letters,$numbers, $text);
echo $output;
输出
1500
DEMO
获取字符串(表示价格)后,可以使用以下内容显示AEJJ
,如AEJ2
$string = 'AEJJ';
function howmanytimes($str,$char){
$maxcount=0;
$thiscount=0;
for($i=0;$i<strlen($str);$i++){
if(substr($str,$i,1)==$char){
$thiscount++;
if($thiscount>$maxcount) $maxcount=$thiscount;
}else $thiscount=0;
}
return $maxcount;
}
$cnt = howmanytimes($string,'J');
if ($cnt > 1) {
$r_string = '';
for ($i = $cnt; $i > 0; $i--) {
$r_string .= 'J';
}
$n_string = 'J'.$cnt;
echo str_replace($r_string, $n_string, $string);
} else {
echo $string;
}
编辑
请参阅我的代码,它将为字符串提供正确的解决方案
尝试以下代码:
$priceCodeVal = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');
$priceCode = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '0');
$price = '1500';
$priceconveert = str_replace($priceCode, $priceCodeVal, $price);
echo $priceconveert;
或
$price = 1500;
$lenPrice = strlen($price);
$priceconveert = '';
$i = 1;
$x = 0;
while ($i <= $lenPrice) {
echo $number = substr($price, $x, 1)." == ";
if ($number == 1) {
$priceconveert .='A';
} else if ($number == 2) {
$priceconveert .= 'B';
} else if ($number == 3) {
$priceconveert .= 'C';
} else if ($number == 4) {
$priceconveert .= 'D';
} else if ($number == 5) {
$priceconveert .= 'E';
} else if ($number == 6) {
$priceconveert .= 'F';
} else if ($number == 7) {
$priceconveert .= 'G';
} else if ($number == 8) {
$priceconveert .= 'H';
} else if ($number == 9) {
$priceconveert .= 'I';
} else if ($number == 0) {
$priceconveert .= 'J';
} else {
$priceconveert .= $number;
}
$i++;
$x++;
}
echo $priceconveert;
使用preg_split()
并尝试此
文本到价格
$priceCode = 'ABCDEFGHIJ';
$chars = preg_split('//', $priceCode, -1, PREG_SPLIT_NO_EMPTY);
$price = '';
foreach ($chars as $value) {
switch ($value) {
case 'A':
$price .= 1;
break;
case 'B':
$price .= 2;
break;
case 'C':
$price .= 3;
break;
case 'D':
$price .= 4;
break;
case 'E':
$price .= 5;
break;
case 'F':
$price .= 6;
break;
case 'G':
$price .= 7;
break;
case 'H':
$price .= 8;
break;
case 'I':
$price .= 9;
break;
case 'J':
$price .= 0;
break;
default:
# code...
break;
}
}
echo($price);
输出1234567890
phpfiddle预览
文本编号
$priceCode = array('A', 'B','C','D','E','F','G','H','I','J');
$number = array('1', '2','3','4','5','6','7','8','9','0');
$price = '19855';
$price_to_text = str_replace($number,$priceCode,$price);
echo $price_to_text;
Phpfiddle预览
$pricecode = ['J','A','B','C','D','E','F','G','H','I'];
$price = 1500;
$convert = str_replace(array_keys($price_code), $price_code, $price);
echo $convert;