PHP - Ds Sequence::slice() 函数



PHP 的 Ds\Sequence::slice() 函数创建一个给定范围的子序列,该子序列是原始序列的一部分。例如,给定一个序列 ([1, 2, 3, 4]),可以通过指定不同的范围来创建子序列,例如 ([1, 2]),([1, 2, 3]),([3, 4])。

此函数接受一个名为“length”的可选参数。以下是关于此参数的重要说明:

  • 如果“length”为负数,则序列停止在距离末尾这么多元素的地方。
  • 如果“length”为正数,则子序列包含这么多元素。
  • 如果“length”超过序列大小,则只包含直到序列末尾的值。
  • 如果没有提供“length”,则子序列将包含“index”和序列末尾之间的所有值。

语法

以下是 PHP Ds\Sequence::slice() 函数的语法:

abstract public Ds\Sequence::slice(int $index, int $length = ?): Ds\Sequence

参数

以下是此函数的参数:

  • index - 子序列开始的索引。
  • length - 指定子序列中包含的元素个数。

返回值

此函数返回给定范围内的子序列。

示例 1

如果省略length参数,只传递index参数,则PHP Ds\Sequence::slice() 函数将返回从给定索引开始到原始序列末尾的子序列:

<?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));
?>

输出

上述程序产生以下输出:

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
)

示例 2

如果同时传递“index”和“length”参数,则 PHP Ds\Sequence::slice() 函数将返回给定范围 (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));
?>

输出

执行上述程序后,将显示以下输出:

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
)

示例 3

如果给定的“length”为负数,则序列将停止在距离末尾这么多值的地方:

<?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));
?>

输出

以下是上述程序的输出:

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
)

示例 4

如果给定的“index”为负数,则子序列中将只包含最后一个元素:

<?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));
?>

输出

执行上述程序后,将生成以下输出:

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
)
php_function_reference.htm
广告