代码的目的是获取所有数字的特定部分,使它们成对,并将它们从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;
}
当我试图运行程序时它显示了这个:
注意:第23行的数组到字符串转换 阵列
答案 0 :(得分:3)
您的错误在于如何尝试输出阵列。你无法在php中回显一个数组。
而不是
echo "$array<br/>";
你应该使用像
这样的东西var_dump($array);
答案 1 :(得分:0)
你的功能错了。
这一行:
$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
输出返回的字符串。