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

Reply via email to