-1

重複の可能性:
配列から特定の値を持つ任意/すべてのキー/値のペアを削除するPHP関数はありますか?
PHP配列からゼロ値を削​​除します

このような配列が1つあります。

[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]);
}

好きなものを選んでください。

ただし、必要なのは「オン」フラグが付いたアイテムのリストであると思います。したがって、これはより適切なアプローチである可能性があります。

$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 に答える