Php 什么是数组_slice()? 更新

Php 什么是数组_slice()? 更新,php,arrays,Php,Arrays,我是PHP开发新手:我在PHP网站上查找函数-array\u 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); 基本上这是一个

我是PHP开发新手:我在PHP网站上查找函数-
array\u 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);

基本上这是一个跳转操作。跳过意味着跳转到该元素。表示数量。

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

 $array_slice = $array(1,2,3);
以上内容包括:

$array[0] = 1,
$array[1] = 2,
$array[2] = 3
因此,
$array\u slice
array\u slice(1)
将返回:

$arraysliced = array_slice($array_slice, 1);
$arraysliced[1] = 2;
$arraysliced[2] = 3; 

它返回输入数组中从定义的偏移量开始的部分,即定义的长度

这样想:

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

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 );
之前您了解到,数组_slice()不保留从索引中获取的元素的索引 数组。如果要保留索引,可以将第四个参数true传递给数组_slice():

除此之外,还有一些错误:让我们从他的阵列开始:

$input = array(1,2,3);
这包括:

array(3) {
    [0]=> int(1)
    [1]=> int(2)
    [2]=> int(3)
}
然后你会:

函数将返回第一个元素后面的值(这就是第二个参数,偏移量的意思)。但是注意钥匙

array(2) {
    [0]=> int(2)
    [1]=> int(3)
}
请记住,在为第四个
preserve\u keys
参数传递
true
之前,不会保留关键帧。此外,因为在此之前还有另一个
length
参数,如果要返回偏移量之后的所有内容,但保留键,则必须传递
NULL

var_dump(array_slice($input, 1, NULL, true));
这将返回stefgosselin(错误地)最初写的内容

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

我不熟悉它,但它看起来像是array_slice($arr,3)返回另一个数组,其中包含从3开始的$arr元素(即缺少元素0、1和2)。这有点像字符串使用的substr函数。下面是我的示例,对吗?只要运行代码,你就会看到你的假设是否正确。在php手册之后,你可能会再次把头靠在他的脖子上。。。可怜的家伙可能听不懂你简练的语言:)谢谢你的回复!这个答案有很多错误。代码中夹杂着注释。这不是定义数组的方式。但最大的错误是,您错误地编写了切片数组的键。同样,对
1
进行切片也没有什么意义。有关固定解释,请参见。任何带有长度的示例。分步代码是在发布示例之前编写的。循序渐进,看看会发生什么。
var_dump(array_slice($input, 1, NULL, true));
array(2) {
    [1]=> int(2)
    [2]=> int(3)
}