ID: 11077 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Open -Bug Type: Feature/Change Request +Bug Type: Documentation problem Operating System: any PHP Version: 4.0.5 Assigned To: andrei New Comment:
Using array_splice both functions can be simulated. Your first example about array_insert() can be translated to <?php $input = array(1,2,3,5); array_splice ($input, 3, 0, 4); print_r($input); ?> Since array_splice() reindex the hash the desired behaviour is succeeded. del() is performed with : <?php $input = array(1,2,3,4,5,6); $a = array_splice ($input, 2, 1); print_r($input); ?> Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 5 [4] => 6 ) -=-=-=-=- Switching to "documentation problem", maybe it's good to add these two examples to the documentation of array_splice. If not - just close. Previous Comments: ------------------------------------------------------------------------ [2001-05-24 05:28:52] [EMAIL PROTECTED] Sounds good to me. More important is the del() operation, though. ------------------------------------------------------------------------ [2001-05-24 04:46:37] [EMAIL PROTECTED] How about insert rather than double? It's more generic and double is simple if you have insert. Like this: <?php $test = array(1,2,3,5); array_insert($test, 3, 4); print_r($test); ?> Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) ------------------------------------------------------------------------ [2001-05-24 04:27:57] [EMAIL PROTECTED] I'd like to propose two new array functions. I currently have the following implementation of del() and double() in PHP, but IMHO it would be better to have these (or atleast del()) natively in PHP. When using unset($array[$index]) on array, no re-indexing is performed: <?php $test = array(1,2,3,4,5,6); unset($test[2]); print_r($test); ?> Array ( [0] => 1 [1] => 2 [3] => 4 [4] => 5 [5] => 6 ) The del() method in the floowing code re-indexes the array: <?php class ftk_array { var $data; function ftk_array($data=array()) { $this->data=$data; } function del($pos) { for($i=$pos+1;$i<count($this->data);$i++) { $this->data[($i-1)]=$this->data[$i]; } unset($this->data[count($this->data)-1]); } function double($pos) { for($i=count($this->data);$i>$pos;$i--) { $this->data[($i)]=$this->data[$i-1]; } } } $test=new ftk_array(array(1,2,3,4,5,6)); $test->del(1); $test->double(4); print_r($test->data); ?> The double() method creates a clone of a given array element, while it maintainsthe indexes as well. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=11077&edit=1 -- PHP Documentation Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php