如何在PHP中将整数转换为字符

3

有没有人能帮我创建一个在PHP中将整数转换为字符的函数,就像这样:

'A' => 0,
'B' => 1,
'C' => 2,
'D' => 3,
'E' => 4,
'F' => 5,
'G' => 6,
'H' => 7,
'I' => 8,
'J' => 9

如果数字是100,则应该生成BAA。

A,B,C等仅为示例。我正在尝试使用代码加密数字。

我需要使其适用于某些单词。

0 => zero
1 => one

但是当我输入数字10时,它应该输出onezero

提前感谢。


3
$character = chr($integer+65); 这是几乎所有编程语言都有的标准函数。 其中chr()函数将ASCII码值转换为对应的字符,$integer+65表示将ASCII码中的整数值加上65,即可得到对应的大写字母字符。 - Mark Baker
4
这个问题没有展示出任何研究努力。重要的是要“做好功课”。告诉我们你找到了什么以及为什么它不能满足你的需求。这表明你已经花时间尝试自我解决,这样可以避免我们重复显而易见的答案,最重要的是它可以帮助你获得更具体和相关的答案。【FAQ】(http://stackoverflow.com/questions/how-to-ask) - John Conde
and ORD()是反向的 - Waygood
字母是否只包含大写字母? - Arnelle Balane
这不是ASCII码,但可以转换为大写字母。 - Safi Baig
显示剩余2条评论
7个回答

16

像这样简单地尝试一下

    $letter = chr($i+65);
    echo $letter;

提供'A'


1
这可能适合您:

$numarr=array('A' => 0, 'B' => 1, 'C' => 2);
$narr = array_flip($numarr);

$num = 100;
$arr = str_split($num);

$str = '';
foreach($arr as $s)
   $str .= $narr[$s];
echo $str . "\n"; //BAA

演示链接: http://ideone.com/3XqoZ7


1
<?php
$list=array('A' => 0,
'B' => 1,
'C' => 2,
'D' => 3,
'E' => 4,
'F' => 5,
'G' => 6,
'H' => 7,
'I' => 8,
'J' => 9);
 $num=1234; //your value
 $temp='';
 $arr_num=str_split ($num);
foreach($arr_num as $data)
{
$temp.=array_search($data,$list);
}
$num=$temp;
echo $num; // here we get BCDE
?>

“$list=array('A','B',..);”然后“$temp.=$list[$data];”会更好吗? - Waygood
array('A','B',..); 的缩写是 array(0=>'A', 1=>'B'..);,因此只要它是有效的索引,您可以添加任何内容。 - Waygood

1
<?php
$number = 100;
$len = strlen($number);
for($i=0;$i<$len;$i++) {
    echo printAlphabet(substr($number,$i,1));
}
function printAlphabet($pos) {
    $letter = chr($pos+65);
    return $letter;
}
?>

0
我创建了一个抽象函数:
    private function getCoordinates($row, $col){
            $letter = $this->getLetter($col);
            return $letter.$row;
    }

    private function getLetter($col){
            // 64+1 = 65 ==>> "A"
            $letter = '';
            if ($col<=26){
                    $letter = chr(64+$col);
            } else {
                    $newCol = intdiv($col, 26);
                    $resCol = ($col % 26);
                    $letter = $this->getLetter($newCol).chr(64+$resCol);
            }
            return $letter;
    }

TEST:
la letra para fila:7 y columna:1 es : A7
la letra para fila:7 y columna:26 es : Z7
la letra para fila:7 y columna:27 es : AA7
la letra para fila:7 y columna:23455756 es : AYHMVL7

0

如果我正确理解你想做的事情,就是要有一个函数返回字母在字母表中的位置,你可以这样做:

<?php
    function chartonumber($char) {
        return ord(strtolower($char)) - 96;
    }
    echo chartonumber('A')."\n";
    echo chartonumber('b')."\n";
    echo chartonumber('E')."\n";
?>

这将打印:

1
2
5

请问字母 A、b 和 E 分别在哪些位置上。

工作原理: - 确保将字母转换为小写。 - 将其转换为 ASCII 整数。 - 减去前面的 96 个 ASCII 表字符。

祝您玩得愉快 :)


-2
<?php
$stack = array("A", "B");
array_push($stack, "C", "D", "E", "F", "G", "H","I","J");
print_r($stack);
?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接