可能重复:
Is there a PHP function to remove any/all key/value pairs that have a certain value from an array?
Remove zero values from a PHP array
我有一个像这样的数组。
[notify_emp] => Array
(
[224] => 0
[228] => 0
[232] => 1
[250] => 1
[350] => 1
)
我只希望数组中的值设置为1并且需要删除值为0的键。 我怎么能用php中的create_function做到这一点?或者有没有其他方法来执行该操作?
答案 0 :(得分:2)
$array = array_filter($array, create_function('$val', 'return (bool) $val;'));
...或PHP> = 5.3:
$array = array_filter($array, function ($val) {
return (bool) $val;
});
......或者只是(正如@outis正确地指出的那样)你可以简单地
$array = array_filter($array);
......或者你可以:
foreach ($array as $k => $v) {
if (!$v) unset($array[$k]);
}
选择。
但是,我想你想要的是一个带有“on”标志的项目列表,所以这可能是一个更好的方法:
$flaggedAsOn = array_keys($array,'1');
答案 1 :(得分:1)
试试这个:
<?php
function hasOne($var)
{
// returns whether the input has 1
return($var == 1);
}
$arr= array("224"=>1, "228"=>0, "250" => 1);
print_r(array_filter($arr, "hasOne"));
?>
结果是:
Array ( [224] => 1 [250] => 1 )
答案 2 :(得分:0)
如果你正在使用PHP 5.3,那么使用带有匿名函数的array_filter就不那么容易了。
如果您使用5.3之前的PHP版本,那么仅使用array_filter实现一个用作回调的函数比使用create_function()更少。
答案 3 :(得分:0)
remove_unwanted ($array) {
foreach ($array as $key => $value) {
if ($array[$key] == '0') { unset($array[$key]) }
}
}