PHP对象未转换为数组[重复]

Posted

技术标签:

【中文标题】PHP对象未转换为数组[重复]【英文标题】:Php object not converting to array [duplicate] 【发布时间】:2016-10-11 01:28:06 【问题描述】:

实际上我无法将 php 对象转换为数组,特别是当我有其他访问说明符时。 例如:

<?php

class Foo

    public $bar = 'barValue';
    protected $baz = 'bazValue';
    private $tab = 'tabValue';


$foo = new Foo();

$arrayFoo = (array) $foo;

echo "<pre>";
var_dump($arrayFoo);

输出是:

array(3) 
  ["bar"]=>
  string(8) "barValue"
  ["*baz"]=>
  string(8) "bazValue"
  ["Footab"]=>
  string(8) "tabValue"

所以我无法获取带有名称的密钥,它会自动添加 *(用于受保护)和类名(用于私有),

【问题讨论】:

因为你已经定义了变量 protected 和 private 这就是为什么它给出 * ,脚在数组索引中...... 这是一个特性,而不是一个错误 【参考方案1】:

get_object_vars PHP documentation 可以使用 cmets 中提到的函数:

function obj2array ( &$Instance ) 
    $clone = (array) $Instance;
    $rtn = array ();
    $rtn['___SOURCE_KEYS_'] = $clone;

    while ( list ($key, $value) = each ($clone) ) 
        $aux = explode ("\0", $key);
        $newkey = $aux[count($aux)-1];
        $rtn[$newkey] = &$rtn['___SOURCE_KEYS_'][$key];
    

    return $rtn;

【讨论】:

以上是关于PHP对象未转换为数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Javascript将数组转换为对象数组

在php中将一维数组转换为多维数组[重复]

PHP将带有一些(重复)元素的XML转换为Json到Json数组[重复]

使用 PHP 将 XML 转换为数组 [重复]

将平面对象数组转换为嵌套对象数组[重复]

如何将此数组的字符串表示形式转换为实际的php数组[重复]