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


array to string conversion using a function for to convert an array

代码的目的是获取所有数字的特定部分,使它们成对排列,并将它们从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输出返回的字符串。