php中的create_function

时间:2011-11-23 11:24:30

标签: php create-function

  

可能重复:
  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做到这一点?或者有没有其他方法来执行该操作?

4 个答案:

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

   }

}