首页 > 解决方案 > 如何正确地将 PHP 对象转换为数组并删除其中的元素?

问题描述

因此,我有一个名为的对象数组$_SESSION['cart'],它从前端获取数据并存储为对象数组。

foreach($_SESSION['cart'] as $value){
$temp = (array) $value;
for($i = 0; $i < count($temp); $i++){
    echo $temp['name'] . "<< - name <br>";
    echo $temp['price'] . "<< - price<br>";
}
}

由于我想将每个对象转换为一个数组,我将遍历它并存储一个新数组,$temp其中每个都将被输出。我是个业余爱好者,因为我已经尝试了几个小时,所以我现在脑子里很乱。

但是,上面代码的输出看起来像

c1<< - name
1<< - price
c1<< - name
1<< - price
c1<< - name
1<< - price
c1<< - name
1<< - price
m1<< - name
1<< - price
m1<< - name
1<< - price
m1<< - name
1<< - price
m1<< - name
1<< - price 

这对我来说似乎不是一个合适的数组。我拥有的所有信息都是名称,我想取消设置与该名称相关的子数组。我里面只有两个对象,但是里面有四个键,我认为这就是为什么输出看起来像有 8 个对象的原因。

所以这就是我尝试的!

我想要做的是取消设置与特定名称相关的对象。

$_SESSION['cart']是一个数组,其中的每一项都是一个对象。如果我循环并 json_encode 那个 $_SESSION['cart'],我会在控制台中得到一个 JSON。

标签: php

解决方案


您可以通过这种方式在会话中取消设置 var:

foreach($_SESSION['cart'] as $key => $value){

   //The case when you need to unset the product
   if($value['product_name'] == 'Some Product'){
      unset($_SESSION['cart'][$key]);//unset the value of the cart from session , for specified product key
   }

}

推荐阅读