首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将命名空间对象转换为数组时出现意外结果

问将命名空间对象转换为数组时出现意外结果
EN

Stack Overflow用户
提问于 2010-12-04 09:21:58
回答 1查看 39关注 0票数 0

在将命名空间对象转换为数组时,我遇到了意外的结果。

代码语言:javascript
复制
<?php

namespace package\test;

class Test {
    private $foo;
    private $bar;

}

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

var_dump($testArray);

输出结果是

代码语言:javascript
复制
array
    '�package\test\Test�foo' => null
    '�package\test\Test�bar' => null

不确定这些来自var_dump的�字符是什么?我查看了源代码,它似乎是&#0;。基本上,我需要做的就是修剪这些键,这样它就会变成

代码语言:javascript
复制
array
    'foo' => null
    'bar' => null

但是我不确定如何使用正则表达式来定位这些�字符,以去除我不想要的部分?这是针对PHP 5.3.3的。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-04 09:46:58

你实际上不需要任何正则表达式。您可以执行以下操作:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4351376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档