PHP:在数组中保留所需的值

时间:2014-06-06 05:59:57

标签: php arrays

如何指定要保留的数组值并将其他所有内容抛出?

$want_to_keep = 32

Array
(
    [1015] => 78
    [2316] => 78
    [5374] => 32
    [8913] => 78
    [1397] => 32
)

我只想要具有'32'值的项目,所以输出:

Array
(
    [5374] => 32
    [1397] => 32
)

我查看了array_filterarray_intersect,两者都不符合此需求。

6 个答案:

答案 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
)

SEE DEMO

答案 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;