2010-12-04 11 views
0

名前空間オブジェクトを配列に変換するときに予期しない結果が発生しています。名前空間オブジェクトを配列に変換すると予期しない結果が発生する

<?php 

namespace package\test; 

class Test { 
    private $foo; 
    private $bar; 

} 

$test = new Test(); 
$testArray = (array) $test; 

var_dump($testArray); 

と出力は、それらの文字がvar_dumpから何であるかを確認してください

array 
    '�package\test\Test�foo' => null 
    '�package\test\Test�bar' => null 

されていませんか?私はソースを見て、それは&#0;と思われる。基本的に私は何をする必要があること、それは

array 
    'foo' => null 
    'bar' => null 

なってしまうので、キーをトリミングですが、私はしたくない部分を取り除くために、正規表現でそれら文字を対象とするかどうかはわかりません?これはPHP 5.3.3用です。ありがとう。

答えて

0

実際には正規表現は必要ありません。

foreach ($testArray as $key => $value) { 
    $pos = strrpos($key, chr(0)); // find the last null character 
    if ($pos !== false) { 
     $testArray[substr($key, $pos+1)] = $value; 
     unset($testArray[$key]); 
    } 
} 

ブラウザによってブラックダイヤモンド(U + FFFD交換CHARACTER)に置き換えられます表示することができないすべての文字:あなたは、次の操作を行うことができます。したがって、この場合、この特定の代替文字をチェックすることは意味をなさないでしょう。

+0

ありがとうございます、あなたは天才です! – axsuul

関連する問題