PHP 数组提取


PHP Array Extraction

我在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;                       
            }
        }