使用函数转换数组的数组到字符串转换

时间:2016-04-22 23:49:12

标签: php for-loop ascii

代码的目的是获取所有数字的特定部分,使它们成对,并将它们从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行的数组到字符串转换 阵列

2 个答案:

答案 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输出返回的字符串。