在php中将对象添加到数组对象

时间:2018-02-02 15:02:29

标签: php arrays object

我是PHP的新手。我创建了一个数组$ store

$store = array(
                'storeId'=> $shoe->storeId,
                'store'=> $shoe->store,
                'showAll'=> false,
                'shoes'=> new \stdClass
                );

我试图在鞋子上添加一个鞋子$鞋子'。我这样做了

$store["shoes"]= $shoe;// This successfully adds $shoe object into $store

但是我无法向其添加新对象。我想要一个像这样的结果。

$store = array(
            'storeId'=> $shoe->storeId,
            'store'=> $shoe->store,
            'showAll'=> false,
            'shoes'=> {{$shoe1}, {$shoe2}...}
            );

修改

foreach($product->shoes as $shoe) {
  $store = searchForId($shoe->storeId, $stores);// returns True if key present
  if($store === null){
    $store = array(
                    'storeId'=> $shoe->storeId,
                    'store'=> $shoe->store,
                    'showAll'=> false,
                    'shoes'=> []
                );
            $store['shoes'][] = json_decode(json_encode($shoe), true);
            array_push($stores, $store);
            }
            else{
                $store['shoes'][] = json_decode(json_encode($shoe), true);

            }
}

1 个答案:

答案 0 :(得分:1)

声明你的数组:

$store = array(
    'storeId'=> $shoe->storeId,
    'store'=> $shoe->store,
    'showAll'=> false,
    'shoes'=> [],
);

现在$store['shoes']数组而不是 stdObject

这意味着您可以像这样添加$store['shoes']

$store['shoes'][] = $shoe;

编辑:您的变量当前是stdClass对象。我建议将其转换为数组,因为其余数据存储为数组。您可以像下面这样轻松完成:

$store['shoes'][] = json_decode(json_encode($shoe), true);

这可以通过将对象编码为json字符串,然后将其解码为数组来实现。

您可以详细了解json_encode() herejson_decode() here