-1

可能重复:
是否有 PHP 函数可以从数组中删除任何/所有具有特定值的键/值对?
从 PHP 数组中删除零值

我有一个这样的数组。

[notify_emp] => Array
  (
      [224] => 0
      [228] => 0
      [232] => 1
      [250] => 1
      [350] => 1
  )

我只想要数组中值设置为 1 并且需要删除值为 0 的键的键。如何在 php 中使用 create_function 来执行此操作?还是有其他方法可以执行该操作?

4

4 回答 4

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');
于 2011-11-23T11:31:48.107 回答
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 ) 
于 2011-11-23T11:29:10.573 回答
0

如果您使用的是 PHP 5.3,那么使用带有匿名函数的 array_filter 就不会那么麻烦了。

如果您使用的是 5.3 之前的 PHP 版本,那么仅使用 array_filter 实现一个用作回调的函数比使用 create_function() 少。

于 2011-11-23T11:29:15.050 回答
0
remove_unwanted ($array) {

   foreach ($array as $key => $value) {

      if ($array[$key] == '0') { unset($array[$key]) }

   }

}
于 2011-11-23T11:32:54.543 回答