PHP - Ds Deque::slice() 函数



PHP 的 Ds\Deque::slice() 函数从当前双端队列中检索一个新的子双端队列,该子双端队列位于指定范围内。子双端队列是原始双端队列的一部分。例如,双端队列 {1, 2} 是原始双端队列 {1, 2, 3} 的子双端队列。

此函数采用两个参数(两者都是必需的)来定义应从中提取元素的范围。这两个位置的元素都将包含在新子双端队列中。

语法

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

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

参数

以下是此函数的参数:

  • index - 一个整数,指定子双端队列开始的索引。
  • length - 一个整数,指定子双端队列的长度。

返回值

此函数返回给定范围内的子双端队列。

示例 1

以下程序演示了 PHP Ds\Deque::slice() 函数的使用:

<?php
   $deque = new \Ds\Deque([1, 2, 3, 4, 5]);
   echo "The original deque: \n";
   print_r($deque);
   $start = 1;
   $end = 4;
   echo "The given range is: (".$start.", ".$end.")";
   echo "\nThe sub-deque of given range is: \n";
   print_r($deque->slice($start, $end));
?>

输出

以上程序产生以下输出:

The original deque:
Ds\Deque Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)
The given range is: (1, 4)
The sub-deque of given range is:
Ds\Deque Object
(
    [0] => 2
    [1] => 3
    [2] => 4
    [3] => 5
)

示例 2

以下是 slice() 函数的另一个示例。我们使用此函数在该双端队列 (['a', 'e', 'i', 'o', 'u']) 的 (0, 2) 指定范围内创建一个新的子双端队列:

<?php
   $deque = new \Ds\Deque(['a', 'e', 'i', 'o', 'u']);
   echo "The original deque: \n";
   print_r($deque);
   $start = 0;
   $end = 2;
   echo "The given range is: (".$start.", ".$end.")";
   echo "\nThe sub-deque of given range is: \n";
   print_r($deque->slice($start, $end));
?>

输出

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

The original deque:
Ds\Deque Object
(
    [0] => a
    [1] => e
    [2] => i
    [3] => o
    [4] => u
)
The given range is: (0, 2)
The sub-deque of given range is:
Ds\Deque Object
(
    [0] => a
    [1] => e
)

示例 3

如果“length”参数被省略,并且仅提供“start”参数,则此函数将返回从“start”到原始双端队列末尾的范围内的子双端队列。

<?php
   $deque = new \Ds\Deque(["Tutorials", "Point", "Hyderabad", "India"]);
   echo "The original deque: \n";
   print_r($deque);
   $start = 1;
   echo "The start value is: ".$start;
   echo "\nThe sub-deque of given range is: \n";
   print_r($deque->slice($start));
?>

输出

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

The original deque:
Ds\Deque Object
(
    [0] => Tutorials
    [1] => Point
    [2] => Hyderabad
    [3] => India
)
The start value is: 1
The sub-deque of given range is:
Ds\Deque Object
(
    [0] => Point
    [1] => Hyderabad
    [2] => India
)

示例 4

如果给定的“start”参数值为负数,则此函数将从原始双端队列的末尾切片这么多元素,如下所示

<?php
   $deque = new \Ds\Deque([10, 20, 30, 40, 50]);
   echo "The original deque: \n";
   print_r($deque);
   $start = -2;
   echo "The start value is: ".$start;
   echo "\nThe sub-deque of given range is: \n";
   print_r($deque->slice($start));
?>

输出

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

The original deque:
Ds\Deque Object
(
    [0] => 10
    [1] => 20
    [2] => 30
    [3] => 40
    [4] => 50
)
The start value is: -2
The sub-deque of given range is:
Ds\Deque Object
(
    [0] => 40
    [1] => 50
)
广告