好的,我想找到字母表中字符的数值。所以a = 1,b = 2 ..z = 26。下面我刚刚调用了字符串密码,并运行for
循环来设置一个密码数组,使其等于字符串中的密码,因此密码[1] = a,但是因为我希望用户输入字符串,所以可以是密码[1] = z。无论如何,然后我运行另一个循环,它有一个switch
语句来查看它等于什么字符,一旦switch
语句找到该字符,它就将密码数组设置为任何字母数字值。由于某种原因,结束代码是1 1 1 1 2 2 3 3,因此由于某种原因它的关闭1值。 IDK如何发生这种情况。有人可以帮忙吗
<?php
$password = "aabbccdd";
$password_length = strlen($password);
$password_array = array($password_length);
$letter= array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
for ($counter = 0; $counter < $password_length; $counter++) {
$password_array[$counter] = $password{$counter};
for ($x = 0; $x < 26 ; $x++) {
switch ($password_array[$counter]) {
case strtolower($letter[$x]):
$password_array[$counter] = $x;
break;
}
}
echo $password_array[$counter];
}
?>
答案 0 :(得分:0)
数组从0开始,而不是1.因此$ password [1]将等于B,而不是A
答案 1 :(得分:0)
您应该将$letter[$x]
的值与$password{$counter}
进行比较,而不是$password_array[$counter]
。不要忘记将$x
加1,因为数组索引以0开头。
$password = "aabbccdd" ;
$password_length = strlen($password);
$password_array = array($password_length);
$letter= array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
for($counter = 0; $counter < $password_length; $counter++ ) {
for($x = 0; $x < 26 ; $x++ ){
switch ($password{$counter}) {
case strtolower($letter[$x]):
$password_array[$counter] = $x + 1;
break ;
}
}
echo $password_array[$counter] ;
}
输出
11223344
工作演示:http://codepad.org/7PT4Z9t3
通过将$letter
更改为关联数组可以简化您的代码,其中每个字母都是关键字,其数值就是相应的值。例如,$letter['a']
为1
,$letter['b']
为2
,依此类推。而且,您只需要一个for
循环。请参阅以下代码
$password = "Aabbccdd" ;
$password_length = strlen($password);
$password_array = array($password_length);
$letter = array(
'a'=>1, 'b'=>2, 'c'=>3, 'd'=>4, 'e'=>5,'f'=>6,'g'=>7,'h'=>8,'i'=>9,'j'=>10,
'k'=>11,'l'=>12,'m'=>13,'n'=>14,'o'=>15,'p'=>16,'q'=>17,'r'=>18,'s'=>19,'t'=>20,
'u'=>21,'v'=>22,'w'=>23,'x'=>24,'y'=>25,'z'=>26);
for($counter = 0; $counter < $password_length; $counter++ ) {
$password_array[$counter] = $letter[strtolower($password{$counter})];
echo $password_array[$counter] ;
}
输出
11223344
答案 2 :(得分:0)
$password = "Aabbccdd" ;
$lowercased_password = strtolower($password);
$password_length = strlen($password);
$counter = 0;
while ($counter < $password_length) {
echo (ord($lowercased_password[$counter])-96);
$counter++;
}
输出:
11223344
有些说明:
我自己的想法: