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