我在PHP中有一个数组$decoded
。这是数组:
Array (
[0] => Ú
[1] => Ý
[2] => æ
[3] => â
)
如何extract
数组并将其分配给变量?
我尝试使用extract()
功能,它可以工作。但我的问题是:数组的索引数量是动态的。
有人想帮忙吗?
更新
这是我的 php 试用版:
<?php
$str = "admin";
echo $str."<br>";
$jc = strlen($str)-1;
for ($i=0;$i<=$jc;$i++){
echo $chr = substr($str,$i,1);
$an = ord($chr);
$asli = ord($chr);
if ($an >=65 and $an <= 90){
$an = $an+127;
}
if ($an >=97 and $an <= 122){
$an = $an+121;
}
if ($an >=48 and $an <= 57){
$an = $an+196;
}
if ($an == 32){
$an = 32;
}
$decoded[$i] = chr($an);
echo " =>$asli => $an => ".$decoded[$i]."<br>";
}
?>
结果是 :
admin
a =>97 => 218 => Ú
d =>100 => 221 => Ý
m =>109 => 230 => æ
i =>105 => 226 => â
n =>110 => 231 => ç
我想将解码的字符 (Ú,Ý,æ,â,ç) 断言为变量。
所以,我的目标是将字符串admin
解码为ÚÝæâç
。正如我上面所说,变量$str
是动态的。
你可以连接
字符串:
<?php
$str = "admin";
echo $str."<br>";
$length = strlen($str);
$newstr = "";
for ($i = 0; $i < $length; $i++) {
echo $chr = $str[$i];
$an = ord($chr);
if ($an >=65 and $an <= 90) {
$an = $an+127;
}
if ($an >=97 and $an <= 122) {
$an = $an+121;
}
if ($an >=48 and $an <= 57) {
$an = $an+196;
}
if ($an == 32) {
$an = 32;
}
$newstr .= chr($an);
}
echo $newstr;
尝试这样,它将创建您的变量数组:
$array = Array (
[0] => Ú
[1] => Ý
[2] => æ
[3] => â
);
extract($array, EXTR_PREFIX_ALL, 'var');
$defined_vars = get_defined_vars();
print_r($defined_vars);
我知道这不是你要找的,但可以从中得到一些想法。
我只是添加一些东西。当您转换不是通常字符的字符时,您会遇到一些问题。
我试过你的剧本。你的角色将被一个非平凡的角色加倍或饶恕,ASCII 数字 (64) 将减去 64,所以你用 64 求和得到你的角色。
这是解决方案:
$pwd = "AzsOke";
$jc = strlen($pwd)-1;
for ($i=0;$i<=$jc;$i++){
if ( $i%2 == 1){
$chr = substr($pwd,$i,1);
$an = ord($chr);
$asli = ord($chr);
if ($an >=193 and $an <= 217){
$an = $an-127;
}
if ($an >=218 and $an <= 243){
$an = $an-121;
}
if ($an >=244 and $an <= 253){
$an = $an-196;
}
if ($an == 32){
$an = 32;
}
$codenumber_pwd .= $an+64;
}
}