从对象php创建数组

时间:2014-03-10 07:45:01

标签: php arrays

我有一个JSON结果文件,它被解码为一个对象数组。我正在使用Foreach找到正确的player,然后希望在正确的播放器下创建一个包含所有信息的数组。

这是对象数组的片段:

object(stdClass)#3 (1) {
  ["result"]=>
  object(stdClass)#4 (18) {
    ["players"]=>
    array(10) {
      [0]=>
      object(stdClass)#5 (24) {
        ["account_id"]=>
        int(72775718)
        ["player_slot"]=>
        int(0)
        ["hero_id"]=>
        int(46)
        ["item_0"]=>
        int(50)
        ["item_1"]=>
        int(139)
        ["item_2"]=>
        int(149)
        ["item_3"]=>
        int(147)
        ["item_4"]=>
        int(168)
        ["item_5"]=>
        int(116)
        ["kills"]=>
        int(26)
        ["deaths"]=>
        int(10)
        ["assists"]=>
        int(9)
        ["leaver_status"]=>
        int(0)
        ["gold"]=>
        int(1622)
        ["last_hits"]=>
        int(285)

这里有几个players,我正在使用account_id找到正确的播放器:

foreach ($data_decoded->result->players as $val){
            if($val->account_id == $this->PlayerID){
                echo "found you!"."\n";
}

如何创建包含所有后续结果的数组?例如,在account_id下方,我想存储所有这些信息(player_slothero_id等。)我是否需要使用另一个foreach?如果是这样,老实说,我不知道如何说出来。

我试过了:

    foreach ($data_decoded->result->players as $val){
        if($val->account_id == $this->PlayerID){
            echo "found you!"."\n"; 
            foreach($val as $test){
                $dataarray=array($test);

            }

但这只会添加与$ val相同的“级别”(不良术语)的值,而不是后续的值?

1 个答案:

答案 0 :(得分:2)

如果您真的想将其更改为数组,可以simply投射it

if ($val->account_id == $this->PlayerID) {
    $dataarray = (array) $val;
}

演示:https://eval.in/116967