Php 无法将对象切割为所需信息

Php 无法将对象切割为所需信息,php,arrays,object,Php,Arrays,Object,我有一个配置,其中包含一个对象,其中包含有关我的系统的所有相关信息。其中一部分列出了系统中当前的所有等级: return (object) array( //User Ranks "Ranks" => (object) array( "Developer" => (object) array( //Admin, User, Banned, Deactivated, Pending Moderation, Pending Emai

我有一个配置,其中包含一个对象,其中包含有关我的系统的所有相关信息。其中一部分列出了系统中当前的所有等级:

return (object) array(
    //User Ranks
    "Ranks" => (object) array(
        "Developer" => (object) array(
            //Admin, User, Banned, Deactivated, Pending Moderation, Pending Email Activation
            "AccountState" => "Admin",
            //Page View Permission
            "PagePermissions" => array(
                "cadet/dashboard",
                "admin/dashboard",
                "admin/users"
            ),
            "TaskPermissions" => array(
                "BasicUserSearch",
                "AdvancedUserSearch",
                "GetRanks",
                "EditUser"
            )
        ),
        "Staff" => (object) array(
            "AccountState" => "Admin",
            //Page View Permission
            "PagePermissions" => array(
                "cadet/dashboard",
                "admin/dashboard",
                "admin/users"
            ),
            "TaskPermissions" => array(
                "BasicUserSearch",
                "AdvancedUserSearch"
            )
        )
    )
);
我需要做的是将这个对象转换成一个简单的数组来返回AJAX调用。阵列必须如下所示:

(
   "Developer" => array("AccountState" => "Admin), 
   "Staff" => array("AccountState" => "Admin)
)
我尝试使用以下代码执行此操作:

public function GetRanks(){
    $LstRanks = (array)$this->config->Ranks;

    for($i = 0; $i < count($LstRanks); $i++){
        $LstRanks[$i] = array_column($LstRanks[$i], "AccountState");
    }
    return json_encode(["data" => 0, "ranks" => $LstRanks]);
}

这是我根据评论中的建议提出的解决方案。似乎我没有正确地将对象转换为数组。

第一行返回null?这是什么意思?哪一行?”返回“?对不起,我忘记把错误信息放进去了。现在检查问题。很抱歉。您提供的代码有点难以理解这里发生了什么,但是如果您想要创建一个包含另一个数组的某些数据子集的数组,最简单的方法是迭代该数组(使用
forearch
)并将您想要的数据添加到一个新数组中。您正在做的事情似乎相当复杂。请尝试使用
foreach($role=>lstrakes$options){foreach($options=>$value){//your logic}}}
,如果$value是数组,请继续使用foreach进行迭代。@arisaila主要问题是将对象转换为数组。一旦这样做了,我应该能够处理循环。
[30-Apr-2017 18:38:47 UTC] PHP Notice:  Undefined offset: 0 in /home/thomassm/public_html/php/lib/UserSystem.php on line 23
[30-Apr-2017 18:38:47 UTC] PHP Warning:  array_column() expects parameter 1 to be array, null given in /home/thomassm/public_html/php/lib/UserSystem.php on line 23
public function GetRanks(){
    $Ranks = (array) $this->config->Ranks;
    $LstRanks = array();

    foreach($Ranks as $StrRank => $LstRankInfo){
        $LstRanks[$StrRank] = $LstRankInfo->AccountState;
    }

    return json_encode(["data" => 0, "ranks" => $LstRanks]);
}