PHP - Ds Sequence::slice() Function
The PHP Ds\Sequence::slice() function creates a sub-sequence of the given range from the original sequence. The sub-sequence is a part of the original sequence. For example, given a sequence ([1, 2, 3, 4]), you can create the sub-sequence such as ([1, 2]), ([1, 2, 3]), ([3, 4]) by specifying different ranges.
This function accepts an optional parameter named 'length'. Below is the list of important points about this parameter −
- If the 'length' isnegative, the sequence stops that many elements from the end.
- If the 'length' ispositive, the sub-sequence has that many elements in it.
- If the 'length'exceedsthe sequence size, only values up to the end of the sequence will be included.
- If the 'length' isnot provided, the sub-sequence will contain all the values between the 'index' and the end of the sequence.
Syntax
Following is the syntax of the PHP Ds\Sequence::slice() function −
abstract public Ds\Sequence::slice(int $index, int $length = ?): Ds\Sequence
Parameters
Following are the parameters of this function −
- index − An index at which the sub-sequence starts.
- length − Specifies the number of elements to include in the sub-sequence.
Return value
This function returns a sub-sequence within the given range.
Example 1
If the length parameter is omitted and passed only the index parameter, the PHP Ds\Sequence::slice() function returns a sub-sequence starting at the given index till the end of the original sequence −
<?php $seq = new \Ds\Vector([1, 2, 3, 4, 5]); echo "The original sequence: \n"; print_r($seq); $index = 1; echo "The given index is: ".$index; echo "\nThe sub-sequence: \n"; print_r($seq->slice($index)); ?>
Output
The above program produces the following output −
The original sequence:
Ds\Vector Object
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
The given index is: 1
The sub-sequence:
Ds\Vector Object
(
[0] => 2
[1] => 3
[2] => 4
[3] => 5
)
Example 2
If both "index" and "length" parameters are passed, the PHPDs\Sequence::slice()function returns a sub-sequence within the given range (index, length) −
<?php $seq = new \Ds\Vector(['a', 'e', 'i', 'o', 'u']); echo "The original sequence: \n"; print_r($seq); $index = 0; $length = 3; echo "The given index is: ".$index; echo "\nThe given length is: ".$length; echo "\nThe sub-sequence: \n"; print_r($seq->slice($index, $length)); ?>
Output
After executing the above program, the following output will be displayed −
The original sequence:
Ds\Vector Object
(
[0] => a
[1] => e
[2] => i
[3] => o
[4] => u
)
The given index is: 0
The given length is: 3
The sub-sequence:
Ds\Vector Object
(
[0] => a
[1] => e
[2] => i
)
Example 3
If the given "length" is negative, the sequence will stop that many values from the end −
<?php $seq = new \Ds\Vector([10, 20, 30, 40, 50]); echo "The original sequence: \n"; print_r($seq); $index = 1; $length = -2; echo "The given index is: ".$index; echo "\nThe given length is: ".$length; echo "\nThe sub-sequence: \n"; print_r($seq->slice($index, $length)); ?>
Output
Following is the output of the above program −
The original sequence:
Ds\Vector Object
(
[0] => 10
[1] => 20
[2] => 30
[3] => 40
[4] => 50
)
The given index is: 1
The given length is: -2
The sub-sequence:
Ds\Vector Object
(
[0] => 20
[1] => 30
)
Example 4
If the given "index" is negative, only the last element will be included in the sub-sequence −
<?php $seq = new \Ds\Vector(["Tutorials", "Point", "India"]); echo "The original sequence: \n"; print_r($seq); $index = -1; echo "The given index is: ".$index; echo "\nThe sub-sequence: \n"; print_r($seq->slice($index)); ?>
Output
Once the above program is executed, it generates the following output −
The original sequence:
Ds\Vector Object
(
[0] => Tutorials
[1] => Point
[2] => India
)
The given index is: -1
The sub-sequence:
Ds\Vector Object
(
[0] => India
)