Sherif Ramadan wrote:
As it stands today, that code would result in the following:

$numbers = array();
$numbers[-1] = 5;
$numbers[] = 6;
var_dump($numbers);
/*
array(2) {
   [-1]=>
   int(5)
   [0]=>
   int(6)
}
*/

I think that it is just clarifying this further by adding
$numbers = array(0,1,2,3,4);
Which gives
array(7) { [0]=> int(0) [1]=> int(1) [2]=> int(2) [3]=> int(3) [4]=> int(4) [-1]=> int(5) [5]=> int(6) }
and
foreach( $numbers as $value ) { print($value); } gives 0123456 as I would have expected!
AND print( $numbers[-1] ); still returns '5'

I can NOW use ksort() to really move the '5' to the top of the list.
array(7) { [-1]=> int(5) [0]=> int(0) [1]=> int(1) [2]=> int(2) [3]=> int(3) [4]=> int(4) [5]=> int(6) }

Bottom line ... perhaps we need a DIFFERENT means of identifying position in the array since using -ve keys IS a valid situation in real life. Personally I use -ve positions in the database tables to save having to process all records when adding items at the top, so the associative array quite correctly has -ve key values. I would not want PHP screwing around with that when reading the array in :)

I think I am right in saying that 'real array' always start at 0 or 1, and positioning is explicit. So for simple stings then ne6ative indexes make perfect sense. But for PHP 'container arrays' we can legally have -ve keys, and removing that is simply not acceptable.

--
Lester Caine - G8HFL
-----------------------------
Contact - http://lsces.co.uk/wiki/?page=contact
L.S.Caine Electronic Services - http://lsces.co.uk
EnquirySolve - http://enquirysolve.com/
Model Engineers Digital Workshop - http://medw.co.uk
Rainbow Digital Media - http://rainbowdigitalmedia.co.uk



--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to