我有一个这样的数组。
[notify_emp] => Array
(
[224] => 0
[228] => 0
[232] => 1
[250] => 1
[350] => 1
)
我只想要数组中值设置为 1 并且需要删除值为 0 的键的键。如何在 php 中使用 create_function 来执行此操作?还是有其他方法可以执行该操作?
我有一个这样的数组。
[notify_emp] => Array
(
[224] => 0
[228] => 0
[232] => 1
[250] => 1
[350] => 1
)
我只想要数组中值设置为 1 并且需要删除值为 0 的键的键。如何在 php 中使用 create_function 来执行此操作?还是有其他方法可以执行该操作?
$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');
尝试这个:
<?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 )
如果您使用的是 PHP 5.3,那么使用带有匿名函数的 array_filter 就不会那么麻烦了。
如果您使用的是 5.3 之前的 PHP 版本,那么仅使用 array_filter 实现一个用作回调的函数比使用 create_function() 少。
remove_unwanted ($array) {
foreach ($array as $key => $value) {
if ($array[$key] == '0') { unset($array[$key]) }
}
}