Re: any solution about array_walk with pass-by-reference UseData?
| From: | Joey Smith | Date: | Wed, 13 Jan 2010 00:53:40 +0000 |
| Subject: | Re: any solution about array_walk with pass-by-reference UseData? | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-46660@lists.php.net to get a copy of this message | ||
This might be better served by taking it to php-general, because I don't
think you need to pin your question so hard to the behaviour of
array_walk(). Here's a quick example of (if I understood your question
correctly) how you might solve it using array_udiff_uassoc and 5.3's new
'closure' syntax (not required for this, but I do so enjoy using them!)
<?php
$return=array();
$disable_full=array('a','b','c');
$disable_start=array('_','!','HTTP'/*,'ddd','ddd','ddd','ddd','ddd'*/);
$check_array=array("a"=>1,"_POST"=>'c',"HTTP"=>"f","ddd"=>array('fefe'));
function buildFilter($keys, $starts_with) {
return function ($a, $b) use ($keys, $starts_with) {
if (in_array($a, $keys)) return 0;
foreach($starts_with as $value) if (strpos($a, $value)===0) return 0;
return 1;
};
}
$foo = buildFilter($disable_full, $disable_start);
var_dump(array_udiff_uassoc($check_array, $disable_full, $disable_start, function () { return 0; },
$foo));