用PHP中的特定字符串代码将价格转换为字符串


Convert price to string with specific string code in PHP

我需要帮助,首先可能有重复,但我想我已经在搜索了,没有找到我期望和想要的东西。

我对我的问题感到困惑。我想要的是将数字格式转换为字符串格式,

我有一个名为的字符串

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