rfc:array_delete
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
rfc:array_delete [2012/08/22 02:12] – [Answer to criticism] levim | rfc:array_delete [2014/04/08 22:56] – Inactive levim | ||
---|---|---|---|
Line 3: | Line 3: | ||
* Date: 2012-08-21 | * Date: 2012-08-21 | ||
* Author: | * Author: | ||
- | * Status: | + | * Status: |
* First Published at: http:// | * First Published at: http:// | ||
===== Introduction ===== | ===== Introduction ===== | ||
Line 47: | Line 47: | ||
To prevent accidental deletion, $strict defaults to true - note that this differs from array_search() where the most likely objective is to "find something" | To prevent accidental deletion, $strict defaults to true - note that this differs from array_search() where the most likely objective is to "find something" | ||
+ | |||
+ | Above example is inefficient, | ||
+ | |||
+ | <code php> | ||
+ | function array_delete(& | ||
+ | $count = 0; | ||
+ | array_walk($array, | ||
+ | if ($strict) { | ||
+ | if ($item === $value) { | ||
+ | $count++; | ||
+ | unset($array[$key]); | ||
+ | } | ||
+ | } else { | ||
+ | if ($item == $value) { | ||
+ | $count++; | ||
+ | unset($array[$key]); | ||
+ | } | ||
+ | } | ||
+ | }; | ||
+ | return $count; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Note for non internal programmers: | ||
<code php>int array_delete_recursive(& | <code php>int array_delete_recursive(& | ||
Line 116: | Line 140: | ||
It says so [[http:// | It says so [[http:// | ||
+ | |||
+ | === Please add this === | ||
+ | |||
+ | I was needing something exactly like this! | ||
+ | |||
+ | == Deleting CURRENTLY working element is OK == | ||
+ | |||
+ | If you are module or core programmer, you should know deleting CURRENTLY working element will not cause any problems as it is NORMAL operation for zend hash. Please ask if you don't understand what we are talking about before edit RFC. | ||
+ | |||
+ | If one reorder element or delete next element to be processed, it will case unwanted behavior. PHP is programming language so shooting your own foot is free for users. | ||
+ | |||
+ | However, this brings up good reason to introduce array_udelete(). array_walk() is certainly not a fool safe function while array_udelete() is. | ||
+ | |||
===== Proposal and Patch ===== | ===== Proposal and Patch ===== | ||
rfc/array_delete.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1