代码的目的是获取所有数字的特定部分,使它们成对排列,并将它们从ascci转换为dec。 示例 55 必须是 7
我有这个代码:
$code = "34002500032323255575249480161649";
$codeneeded = substr($code, 9, 16);
$array = ascii_to_dec($codeneeded);
echo "$array<br>";
这样我就可以得到所有这些3232325557524948,并使用一个函数将此数字从 ASCCI 转换为 dec.让他们配对进行此转换,例如:32 32 32 55 54 52 49 48。
IM 调用的函数是这个:
function ascii_to_dec($str)
{
for ($i = 0, $j = strlen($str); $i < $j; $i= $i+2) {
$y=$i+1;
$dec_array[] = chr($str{"$i$y"});
return $dec_array;
}
当IM尝试运行程序时,它显示了这一点:
注意:第 23 行的数组到字符串转换数组
您的错误在于您尝试输出数组的方式。你不能在 php 中回显数组。
而不是
echo "$array<br/>";
你应该使用类似的东西
var_dump($array);
你的函数是错误的。
这一行:
$str{"$i$y"};
假设以下值:
$str{01}; // string offset 01
$str{23}; // string offset 23
$str{45}; // string offset 45
(...)
但是在您的字符串样本偏移量 23、45 等中不存在。我猜你没有看到任何错误,因为你错过了if
括号的右键,你的代码只返回第一个$str{01}
.在这种情况下,返回的数组只有一个元素具有转换后的3
。否则,您将拥有一个包含转换3
和 7 个空元素的数组。
以这种方式更改代码:
function ascii_to_dec( $str )
{
for( $i = 0, $j = strlen($str); $i < $j; $i= $i+2 )
{
$dec_array[] = chr( substr( $str, $i, 2) );
}
return $dec_array;
}
$array = ascii_to_dec( $codeneeded );
print_r( $array );
结果:
Array
(
[0] => ' '
[1] => ' '
[2] => ' '
[3] => 7
[4] => 9
[5] => 4
[6] => 1
[7] => 0
)
否则,如果要返回转换后的字符串,请将return $dec_array;
替换为return implode( $dec_array );
或return trim( implode( $dec_array ) );
,并使用echo
输出返回的字符串。