如何指定要保留的数组值并将其他所有内容抛出?
$want_to_keep = 32
Array
(
[1015] => 78
[2316] => 78
[5374] => 32
[8913] => 78
[1397] => 32
)
我只想要具有'32'值的项目,所以输出:
Array
(
[5374] => 32
[1397] => 32
)
我查看了array_filter
和array_intersect
,两者都不符合此需求。
答案 0 :(得分:4)
用过滤的数组替换数组:
$arr = array_filter($arr, function($value) use ($want_to_keep) {
return $value === $want_to_keep;
});
一种陌生的方式:
$arr = array_fill_keys(array_keys($arr, $want_to_keep, true), $want_to_keep);
答案 1 :(得分:3)
尝试使用32个值创建新数组
foreach($arr as $k=>$v) {
if ($v == '32') {
$newarr[$k] = $v;
}
}
print_r($newarr);
想要使用相同的数组尝试unset()
foreach($arr as $k=>$v) {
if ($v != '32') {
unset($arr[$k]);
}
}
print_r($arr);
答案 2 :(得分:3)
array_intersect()就是这样做的。
简单地:
$want_to_keep = array(32);
$arr = Array
(
1015 => 78,
2316 => 78,
5374 => 32,
8913 => 78,
1397 => 32
);
print_r(array_intersect($arr, $want_to_keep));
输出:
Array
(
[5374] => 32
[1397] => 32
)
答案 3 :(得分:1)
您可以使用以下代码删除所有不需要的内容
foreach($inputArray as $currItem=>$currValue)
{
if($currValue!=$desiredValue)
unset($inputArray($desiredValue);
}
其中变量名称隐含其含义。
答案 4 :(得分:1)
$want_to_keep = 32
$array = array_filter($array, function($element) use($want_to_keep) {
return $element === $want_to_keep;
});
答案 5 :(得分:1)
$keys = array_keys($arrToSearch, 32);
$new = [];
foreach($keys AS $key){
$new[$key] = $arrToSearch[$key];
}
unset($arrayToSearch);
//what you requsted is
$new;