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
