Php 基于密钥匹配取消设置数据
资料 上面是存储在数组中的数据,如果属性存在,任何人都知道如何取消设置数据,因此我想取消设置数据id9962。因此,数据如下所示Php 基于密钥匹配取消设置数据,php,laravel,Php,Laravel,资料 上面是存储在数组中的数据,如果属性存在,任何人都知道如何取消设置数据,因此我想取消设置数据id9962。因此,数据如下所示 Array ( [0] => Array ( [id] => 9962 [value] => Amart ) [1] => Array ( [id] => attrval_9962
Array
(
[0] => Array
(
[id] => 9962
[value] => Amart
)
[1] => Array
(
[id] => attrval_9962
[value] => k
)
[2] => Array
(
[id] => 9952
[value] => Denim
)
[3] => Array
(
[id] => attrval_9952
[value] => l
)
[4] => Array
(
[id] => 5788
[value] => Grey
)
[5] => Array
(
[id] => 21307
[value] => Long Sleeve
)
)
这意味着我只想存储属性值存在的数据,否则将存储回默认值。首先获取一个包含
Array
(
[0] => Array
(
[id] => attrval_9962
[value] => k
)
[1] => Array
(
[id] => attrval_9952
[value] => l
)
[2] => Array
(
[id] => 5788
[value] => Grey
)
[3] => Array
(
[id] => 21307
[value] => Long Sleeve
)
)
$filtered = array_filter($array, function ($data) {
return strpos($data['id'], 'attrval_') !== false;
});
然后找出两个数组的差异
$filtered = array_filter($data, function($element){
return strpos($element['id'], 'attrval_') !== false;
});
你可以用它来做
$result = array_udiff($data, $filtered, function($a, $b) {
return intval($a != $b);
});
$result仍将包含我尝试过的所有数据,根据$data数组,$result将只包含两条记录
$result = [];
foreach(data as $value){
if(strpos($value['id'],'attrval_) !== false){
$result[] = $value
}
}