2010-12-04 24 views
0

将名称空间对象转换为数组时,出现意外结果。将名称空间对象转换为数组时出现意外结果

<?php 

namespace package\test; 

class Test { 
    private $foo; 
    private $bar; 

} 

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

var_dump($testArray); 

和输出

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

不知道什么那些字符是从var_dump?我查看了源代码,它似乎是&#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替换字符)由浏览器来代替每个人的性格。所以在这种情况下,检查这个特定的替代字符是没有意义的。

+0

谢谢你,你是一个天才! – axsuul 2010-12-04 01:50:30

相关问题