2012/8/20 Andrew Faulds <a...@ajf.me>: > On 20/08/12 00:05, Yasuo Ohgaki wrote: >> >> 2012/8/20 Etienne Kneuss <col...@php.net>: >>> >>> On Sun, Aug 19, 2012 at 11:57 PM, Yasuo Ohgaki <yohg...@ohgaki.net> >>> wrote: >>>> >>>> 2012/8/18 Rasmus Lerdorf <ras...@lerdorf.com>: >>>>> >>>>> On 08/17/2012 05:21 PM, Rasmus Schultz wrote: >>>>>>> >>>>>>> if(($key = array_search($del_val, $messages)) !== false) { >>>>>>> unset($messages[$key]); >>>>>>> } >>>>>>> >>>>>>> Nothing horrible here. >>>>>>> >>>>>> I disagree - this is (or should be) a simple, atomic operation... >>>>>> yet, you've got a function-call, an intermediary variable, a boolean >>>>>> test, >>>>>> and an unset statement repeating the name of the array you're deleting >>>>>> from. >>>>>> >>>>>> This should be a simple statement or function/method-call, and in most >>>>>> other languages it would be... >>>>> >>>>> Really? I can't think of a single language that has a call to remove an >>>>> element by value in a key-value hash. Do you have some examples? What >>>>> do >>>>> you do with duplicates? >>>>> >>>> Ruby can do (using irb) >>>> >>>> ruby-1.9.2-p180 :007 > h = {"apple"=>150, "banana"=>300, "lemon"=>300} >>>> => {"apple"=>150, "banana"=>300, "lemon"=>300} >>>> ruby-1.9.2-p180 :008 > h.delete_if { |k,v| v==300 } >>>> => {"apple"=>150} >>>> >>>> May be we should have something like >>>> >>>> array_delete_if($array, function($v, $k=null) { if ($v == 300) return >>>> true; }) >>> >>> So array_filter? >> >> I'll use it or like for deleting, but the point of this thread is >> "intuitive function for deleting element(s)" >> >> array_delete($array, $value|callable) >> >> would be nicer for users, perhaps. > > A callable? Wouldn't that mean you couldn't delete strings? :(
If you read my previous post, you'll see why it would be nicer with callable. >>>> Ruby can do (using irb) >>>> >>>> ruby-1.9.2-p180 :007 > h = {"apple"=>150, "banana"=>300, "lemon"=>300} >>>> => {"apple"=>150, "banana"=>300, "lemon"=>300} >>>> ruby-1.9.2-p180 :008 > h.delete_if { |k,v| v==300 } >>>> => {"apple"=>150} >>>> >>>> May be we should have something like >>>> >>>> array_delete_if($array, function($v, $k=null) { if ($v == 300) return >>>> true; }) -- Yasuo Ohgaki -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php