什么是array_slice()?

时间:2011-05-28 12:17:22

标签: php arrays

更新

我是PHP开发的新手:我在PHP网站上查找了一个函数 - array_slice。我看了看这个例子,但我不明白。有人可以用清楚的话语向我解释这个吗?

我认为它的工作原理如下?

$example = array(1,2,3,4,5,6,7,8,9);
$offset = 2;
$length = 5;
$newArray = array_slice($example, offset, length);

the result of $newArray is: $newArray(3,4,5,6,7);

5 个答案:

答案 0 :(得分:4)

除了stefgosselin's answer之外还有一些错误:让我们从他的数组开始:

$input = array(1,2,3);

包含:

array(3) {
    [0]=> int(1)
    [1]=> int(2)
    [2]=> int(3)
}

然后你做array_slice

var_dump(array_slice($input, 1));

该函数将返回第一个元素后面的值(即第二个参数,即偏移量)。但请注意钥匙!

array(2) {
    [0]=> int(2)
    [1]=> int(3)
}

请记住,在第true个参数传递preserve_keys之前,不会保留密钥。另外,因为在此之前还有另一个length参数,如果要返回偏移后的所有内容,则必须传递NULL,但保留密钥。

var_dump(array_slice($input, 1, NULL, true));

这将返回stefgosselin(错误地)最初写的内容。

array(2) {
    [1]=> int(2)
    [2]=> int(3)
}

答案 1 :(得分:2)

此函数返回数组的子集。要理解手册页上的示例,您必须了解数组键从0开始,即

 $array_slice = $array(1,2,3);

以上内容包含:

$array[0] = 1,
$array[1] = 2,
$array[2] = 3

因此,array_slice(1)的{​​{1}}会返回:

$array_sliced

答案 2 :(得分:1)

它返回输入数组中以定义的偏移量开始的部分,它是您定义的长度。

这样想:

$output = array();
for ($i = 0; $i++; $i < count($input)) {
  if ($i < $start)
    continue;
  if ($i > $start + $length)
    break;
  $output[] = $input[$i];
}

答案 3 :(得分:0)

基本上它是一个跳过操作。跳过意思跳转到该元素。取意义有多少。

答案 4 :(得分:0)

PHP有一个内置函数array_slice(),可用于从中提取一系列元素 阵列。要使用它,传递数组以从中提取切片,然后是第一个元素的位置 范围(从零开始计数),然后是要提取的元素数。该函数返回一个新的 包含您提取的元素的副本的数组(它不会触及原始数组)。例如:

$authors = array( “Steinbeck”,
“Kafka”, “Tolkien”, “Dickens” );
$authorsSlice = array_slice(
$authors, 1, 2 ); // Displays “Array
( [0] = > Kafka [1] = > Tolkien )”
print_r( $authorsSlice );

顺便说一句,如果省略array_slice()的第三个参数,该函数将提取所有元素 从数组的起始位置到结尾:

$authors = array( “Steinbeck”, “Kafka”, “Tolkien”, “Dickens” );
$authorsSlice = array_slice( $authors, 1 );
// Displays “Array ( [0] = > Kafka [1] = > Tolkien [2] = > Dickens )”;
print_r( $authorsSlice );

之前您了解到array_slice()不保留从索引中获取的元素的索引 阵列。如果要保留索引,可以将第四个参数true传递给array_slice():

$authors = array( “Steinbeck”, “Kafka”, “Tolkien”, “Dickens” );
// Displays “Array ( [0] = > Tolkien [1] = > Dickens )”;
print_r( array_slice( $authors, 2, 2 ) );
// Displays “Array ( [2] = > Tolkien [3] = > Dickens )”;
print_r( array_slice( $authors, 2, 2, true ) );