php - 如何正确地将 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。
解决方案
您可以通过这种方式在会话中取消设置 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
}
}