The concept of "regional" variables you're describing already exists via use statements for anonymous functions. The following should be possible:
function array_sanitize($array, $filter) { $negFilter = function($arg) use ($filter) { return !$filter($arg); }; return array_filter($array, $negFilter) } See example #3 here: http://php.net/manual/en/functions.anonymous.php On Wednesday, November 16, 2011, Jim Williams <j...@pagenotes.com> wrote: > I just ran across a simple problem I couldn't solve, namely to create a function that does the opposite of array_filter, call it array_sanitize. The closest I could come doesn't work for anonymous functions: > > <?php > function array_sanitize($array, $filterName) { > $negFilter = create_function('$arg', 'return !'.$filterName.'($arg);'); > return array_filter($array, $negFilter); > } > //Example: > $a = array('a'=>6,'b'=>1,'c'=>4,'d'=>9); > function isOdd($arg) { return $arg % 2 == 1; } > print_r (array_sanitize($a, 'isOdd')); // outputs 'Array ( [a] => 6 [c] => 4 )' > ?> > > If we had variables of intermediate scope, call them "regional" variables, we could do this: > /* > function array_sanitize($array, $filter) { > $negFilter = function($arg) { > regional $filter; > return !$filter($arg) > }; > return array_filter($array, $negFilter) > } > */ > > So, my question is how and whether to advocate the need for variables of intermediate scope. > Specifically, is there a public forum for suggesting improvements to PHP? > > Jim Williams > J. G. Williams Design > > _______________________________________________ > New York PHP Users Group Community Talk Mailing List > http://lists.nyphp.org/mailman/listinfo/talk > > http://www.nyphp.org/Show-Participation > -- jeremy mikola
_______________________________________________ New York PHP Users Group Community Talk Mailing List http://lists.nyphp.org/mailman/listinfo/talk http://www.nyphp.org/Show-Participation