如何根据值删除数组中的数组

时间:2017-03-15 12:00:37

标签: php laravel laravel-5.3

我在会话中有一个数组

array:7 [▼
  0 => array:2 [▼
    "store" => "store1"
    "product" => "1"
  ]
  1 => array:2 [▼
    "store" => "store2"
    "product" => "2"
  ]
  2 => array:2 [▼
    "store" => "store3"
    "product" => "4"
  ]
]

我创建了一个函数来删除与给定时的store值匹配的数组。例如,我提供store1它应该删除store1数组并输出如下

array:7 [▼
  0 => array:2 [▼
    "store" => "store2"
    "product" => "2"
  ]
  1 => array:2 [▼
    "store" => "store3"
    "product" => "4"
  ]
]

相反,我得到了输出

array:2 [▼
  1 => "store2"
  2 => "store3"
]

我的功能

function removeFromSessionArray($name, $value)
{
    return session()->put($name, array_diff(session()->get('stores'), [$value]));
}

有人能告诉我如何实现可能的输出?

PS。学习阵列。

2 个答案:

答案 0 :(得分:1)

试试这个

$m = session('products');
    for($i=0;$i<count($m);$i++)
    {
        if($m[$i]['store']==$username)
        {
            unset($m[$i]['store']);
            unset($m[$i]['product']);
        }
    }

    dd(array_values(array_filter($m)));

答案 1 :(得分:0)

你可以使用这个数组的简单索引([store value]。[product value]),如下所示:

array:7 [▼
  'store1.1' => array:2 [▼
    "store" => "store1"
    "product" => "1"
  ]
  'store2.2' => array:2 [▼
    "store" => "store2"
    "product" => "2"
  ]
  'store3.4' => array:2 [▼
    "store" => "store3"
    "product" => "4"
  ]
]

在这些更改之后,您只需删除会话数组中的任何值