繁体   English   中英

从PHP数组中删除元素

[英]Remove element from array in php

我是php新手,我想从数组中删除元素这是我的数组:

Array
(
[Total] => 21600000
[Items] => Array
    (
        [2-13] => Array
            (
                [Item] => 2
                [PID] => 13
                [UPrice] => 11000000
                [Qty] => 1
                [Total] => 11000000
            )

        [58-167] => Array
            (
                [Item] => 58
                [PID] => 167
                [UPrice] => 5300000
                [Qty] => 1
                [Total] => 5300000
            )

    )

)

我想通过PID删除数组元素。 我已经尝试过了,但是没有运气:-

    $ShoppingBag =$_SESSION['ssss'];        

    if ($ShoppingBag !== null && $ShoppingBag['Total'] > 0) {          
        foreach ($ShoppingBag['Items'] as $IOrder) {               

          if($IOrder["PID"]==13)
          {                 
              unset($ShoppingBag[$IOrder]);

          }else
          {

          }
        }
    }

请帮忙。 谢谢

您可以尝试一个简单的数组映射:)

$arr = [
    'Total' => 21600000,
    'Items' => [
                '2-13' => [
                        'Item' => 2,
                        'PID' => 13,
                        'UPrice' => 11000000,
                        'Qty' => 1,
                        'Total' => 11000000
                ],
                '58-167'=> [
                        'Item' => 58,
                        'PID' => 167,
                        'UPrice' => 5300000,
                        'Qty' => 1,
                        'Total' => 5300000
                ]
            ]
    ];

$test = array_map(function($ar) { 
    foreach($ar as $k=>$i) { 
        if( isset($i['PID']) && $i['PID'] == '13') 
            unset($ar[$k]); 
    } 
    return $ar; } , $arr);

var_dump($test);

您需要2个循环来执行所需的操作。

foreach($my_array as $key=>$value)
{
    if(is_array($value))
    {
       foreach($value as $k=>$v)
       {
         if($k == 'PID')
         {
             unset($value[$k]);
         }
       }
   }
}

这样,您只能删除具有关键PID的元素。

嗨,您取消设置$ IOrder而不是要删除的商品:此代码是我测试过的解决方案:

$ShoppingBag = Array
(
"Total" => 21600000,
"Items" => Array
    (
        "2-13" => Array
            (
                "Item" => 2,
                "PID" => 13,
                "UPrice" => 11000000,
                "Qty" => 1,
                "Total" => 11000000,
            ),

        "58-167" => Array
            (
                "Item" => 58,
                "PID" => 167,
                "UPrice" => 5300000,
                "Qty" => 1,
                "Total" => 5300000,
            ),

    ),

);

foreach($ShoppingBag["Items"] as $key => $value){
    if($value["PID"]==13){
        unset($ShoppingBag["Items"][$key]);
    }
}

您应该知道,总是在使用foreach循环对$ b进行操作时,foreach($ a as $ b)时,$ a保持不变,因为tey是不同的变量:)希望它会对您有所帮助。

问候。

$arr = [
    'Total' => 21600000,
    'Items' => [
                '2-13' => [
                        'Item' => 2,
                        'PID' => 13,
                        'UPrice' => 11000000,
                        'Qty' => 1,
                        'Total' => 11000000
                ],
                '58-167'=> [
                        'Item' => 58,
                        'PID' => 167,
                        'UPrice' => 5300000,
                        'Qty' => 1,
                        'Total' => 5300000
                ]
            ]
    ];

$pid_to_remove = 13;

$new_ar = array_filter(
    $arr,
    function ($v) using ($pid_to_remove) {
        return (!isset($v['PID'])) || ($v['PID'] != $pid_to_remove);
    }
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM