On 30 Jan 2010, at 21:45, Wade Preston Shearer wrote:

> On 30 Jan 2010, at 21:38, Jonathan Duncan wrote:
> 
>> Maybe it is just late, but this is bugging me.
>> 
>> I got this example from the PHP documentation 
>> (http://us3.php.net/manual/en/function.array-slice.php):
>> 
>> $input = array("a", "b", "c", "d", "e");
>> 
>> $output = array_slice($input, 2);      // returns "c", "d", and "e"
>> print_r($output);
>> $output = array_slice($input, -2, 1);  // returns "d"
>> print_r($output);
>> $output = array_slice($input, 0, 3);   // returns "a", "b", and "c"
>> print_r($output);
>> 
>> What is baffling me is why the second array_slice returns "d" instead of 
>> "c", "d".
>> 
>> Perhaps the wording they use in the offset gives away the answer, but if so, 
>> then I submit that they are being inconsistent.  An array starts counting  
>> at 0 (unless you specify otherwise).  If the non-negative offset specified 
>> is 2 then is will start at the third offset.  One would think that the 
>> negative offset should work the same way, but in reverse.
>> 
>> Someone set me straight, please.  I need to just put this down for the night.
> 
> Regardless of the type of indexing used from the end, it doesn't make sense 
> for example 2 to return more than one item. The third (optional) value passed 
> into the array is length.
> 

Agreed, that would be another inconsistency.  Because if the length specified 
is positive, then it acts as a length, if it is negative, then it is the length 
from the end not necessary the length of the slice.  Argh.


> I agree with you that it is inconsistent of them to use zero-based indexing 
> from the front and one-based indexing from the end.

Good, I am glad it is not just me being crazy.  I can rest easy tonight.

Thanks.

_______________________________________________

UPHPU mailing list
[email protected]
http://uphpu.org/mailman/listinfo/uphpu
IRC: #uphpu on irc.freenode.net

Reply via email to