Re: any solution about array_walk with pass-by-reference UseData?

From: Date: Wed, 13 Jan 2010 11:33:25 +0000
Subject: Re: any solution about array_walk with pass-by-reference UseData?
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-301056@lists.php.net to get a copy of this message
Online document say's Note: Please note that this function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using, for example, array_udiff_uassoc($array1[0], $array2[0], "data_compare_func", "key_compare_func");. It's not my needed My need is $disable_full=array("a","b","c"); $disable_start=array("_","HTTP"); $check_array=array(array("http"=>"a"),"a"=>"dabdd"); I want to unset all element's key full match in $disable_full and start with string in $disable_start array; 2010/1/13 Joey Smith <joey@joeysmith.com>: > 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)); > >

« previous php.general (#301056) next »