此处的示例http://php.net/manual/en/function.array-slice.php
$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 2); // returns "c", "d", and "e"
$output = array_slice($input, -2, 1); // returns "d"
$output = array_slice($input, 0, 3); // returns "a", "b", and "c"
但是如何得到例如“a”,“d”和“e”?
喜欢
$output = array_slice($input, 0, 1);
$output = array_slice($input, 3, 1);
$output = array_slice($input, -1, 1);
但是在一个变量中。有可能吗?
更新。想要使用数组的第1,第3和最后一个元素。好像提取第一个,第三个和最后一个元素并仅使用3个元素创建新数组。
答案 0 :(得分:8)
你必须抛出array_merge()
,因为array_slice()
只能提取数组的子序列,而不是遍布整个数组的任意数量的元素。分别提取每个子序列,然后将它们合并为一个数组:
$slice1 = array_slice($input, 0, 1);
$slice2 = array_slice($input, -2, 2);
$output = array_merge($slice1, $slice2);
请注意,只有在您真正了解阵列中的每个元素时,这才有效。在这种情况下,您也可以使用直接数组访问,这很可能会产生更少的开销并且更容易阅读:
$output = array($input[0], $input[3], $input[4]);
使用array_filter()
甚至自定义迭代器可能更合理。但是你没有提供足够的关于你的任务的信息来清楚地说明这一点。
编辑:
如果只是表示法的问题,您可以尝试使用所有相关索引指定一个数组,然后使用array_fill_keys()
切换它以便与array_intersect_key()
一起使用以仅从数组中提取相关元素:
$indexes = array(0, 3, 4);
$indexArray = array_fill_keys($indexes, true);
$output = array_intersect_key($input, $indexArray);