开发者

Unexpected results when converting a namespaced object to an array

I'm having unexpected results when converting a namespaced object to an array.

<?php

namespace package\test;

class Test {
    private $foo;
    private $bar;

}

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

var_du开发者_开发问答mp($testArray);

and the output is

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

Not sure what those characters are from the var_dump? I looked in the source and it appears to be &#0;. Basically what I need to do is trim the keys so it ends up being

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

but I'm not sure how to target those characters with a regular expression to get rid of the part that I don't want? This is for PHP 5.3.3. Thanks.


You actually don't need any regular expressions. You can do the following:

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]);
    }
}

Every character that cannot be displayed will be replaced with a black diamond (U+FFFD REPLACEMENT CHARACTER) by the browser. So in this case it wouldn't even make sense to check for this particular substitute character.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜