Hi 2012/8/22 Andrew Faulds <a...@ajf.me>: > On 21/08/12 10:36, Yasuo Ohgaki wrote: >> >> Int would be better and callable should be accepted like array_walk(). >> It's better to have array_delete_recursive(), too. >> I updated the page. > > Callable? What? This is to remove a single value, like a set. If you want to > remove based on a function, array_walk() is always available. And allowing a > callable would prevent you from removing closures or strings! D:
Original proposal was to delete all value that matches. It's not delete a single value. We could choose to remove only 1st element, but is it useful? People may do while (array_delete($array, "do not needed")); This is stupid O(n^2) code. > >> >> array_add() needs more discussion. >> What we should do with array value, accept callable or not, etc. > > Why accept a callable? > I don't think it needs more discussion, I can't see how it could be made any > better than it currently is. What's the point of adding NEW feature with less extensible against competitor? Take a look at Ruby's delete_if() With callable, one could do $array = [1,2,3,4,5,6,7,8]; $cnt = array_delete($array, function($v) { if ($v <== 4) return true; }); var_dump($cnt, $array); // $cnt = 4, $array = [5,6,7,8] With array_walk() $array = [1,2,3,4,5,6,7,8]; $cnt = 0; array_walk($array, function($v) use (&$array, &$cnt) { if ($v <== 4) {$cnt++; return true;) }); var_dump($cnt, $array); // $cnt = 4, $array = [5,6,7,8] As I mentioned earlier, array_walk() is the best way to delete elements with PHP more than a decade. It should be mentioned the Stack Overflow page, but it's not. It's just like adding array_pop()/array_push()/array_shift()/array_unshift() while we have array_slice()/array_splice(). Regards, -- Yasuo Ohgaki yohg...@ohgaki.net -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php