2016-04-22 28 views
0

代碼的目的是獲取所有數字的特定部分,讓它們成對並將它們從ascci轉換爲dec。例如55爲7數組到字符串轉換使用函數來轉換數組

我有這樣的代碼:

$code = "34002500032323255575249480161649"; 
$codeneeded = substr($code, 9, 16); 
$array = ascii_to_dec($codeneeded); 
echo "$array<br>"; 

這樣我就可以得到這一切3232325557524948,使用功能,這個數字從ascci轉換爲十進制讓他們配對此轉換的交互,如: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

這是什麼語言? PHP? –

+0

是的。它是PHP。 – Max

回答

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 implode($dec_array);替換return $dec_array;return trim(implode($dec_array));和使用echo輸出返回字符串。

+0

它工作!謝謝你c: – Max

3

你的錯誤是你如何嘗試輸出的陣列。你不能在php中回顯數組。

代替

echo "$array<br/>"; 

你應該使用類似

var_dump($array); 
+0

或'echo implode('',$ array);' – andrew