2016-04-22 32 views
0

コードの目的は、すべての数値の特定のセクションを取得し、それらをペアにし、それらをascciからdecに変換することです。私はこのすべて3232325557524948、及びascciから12月には、この番号を変換する機能を使用して取得することができます配列を文字列に変換する配列を変換する関数

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

この方法:例55は、私はこのコードを持っている7

なければなりません。彼らは次のようにこのconvertion用にペアになって:32 32 32 55 54 52 49 48

機能イム呼び出しは、このいずれかになります。

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{01}; // string offset 01 
$str{23}; // string offset 23 
$str{45}; // string offset 45 
(...) 

が、あなたの文字列のサンプルオフセットで23、45、など存在しません:

$str{"$i$y"}; 

は、これらの値が想定しています。私はあなたがifかっこを閉じるのを忘れてしまったので、あなたはエラーを見ないと思うし、あなたのコードは最初に$str{01}だけを返します。この場合、返される配列には、3に変換された要素が1つしかありません。それ以外の場合は、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 trim(implode($dec_array));return $dec_array;を交換し、出力にechoを使用返された文字列。

+0

それは働いた!ありがとうC: – Max

3

あなたのエラーの文字列への変換アレイは、あなたの配列を出力しようとする方法です。 PHPで配列をエコーすることはできません。

代わり

echo "$array<br/>"; 

のあなたは、あなたの関数が間違っている

var_dump($array); 
+0

または 'echo implode( ''、$ array);' – andrew

関連する問題