当前位置: 首页> 最新文章列表> array_values 搭配 array_slice 怎么用?提高数组处理效率的实用技巧

array_values 搭配 array_slice 怎么用?提高数组处理效率的实用技巧

gitbox 2025-09-17

在 PHP 中,数组操作是日常开发中不可避免的任务。而 array_valuesarray_slice 作为两个非常常用的数组函数,能够帮助开发者更加高效地处理和操作数组。今天,我们将深入探讨如何将这两个函数结合起来使用,从而提高数组处理的效率。

1. array_values 函数简介

array_values 函数的作用是返回数组中的所有值,并重新索引数组的键。该函数会将数组中的所有值提取出来,忽略键名,返回一个从 0 开始的索引数组。此函数通常在以下情况下使用:

  • 当需要去除数组中的键名,只关心数组的值时;

  • 当原始数组的键不连续时,使用 array_values 可以重新排序索引,确保数组键名是从 0 开始的连续整数。

示例

<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-string">"a"</span></span><span> =&gt; </span><span><span class="hljs-string">"apple"</span></span><span>, </span><span><span class="hljs-string">"b"</span></span><span> =&gt; </span><span><span class="hljs-string">"banana"</span></span><span>, </span><span><span class="hljs-string">"c"</span></span><span> =&gt; </span><span><span class="hljs-string">"cherry"</span></span><span>];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>

输出:

<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; apple
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; banana
    [</span><span><span class="hljs-number">2</span></span><span>] =&gt; cherry
)
</span></span>

如上所示,array_values 函数返回的是一个重新索引的数组,原来的键名(abc)被忽略了,只保留了值,并按数字索引重新排序。

2. array_slice 函数简介

array_slice 函数用于从一个数组中提取一部分元素,并返回该部分的子数组。它允许开发者指定从哪个位置开始提取,以及提取多少个元素。这个函数不会修改原始数组,它返回的是一个新的子数组。

示例

<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_slice</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);  </span><span><span class="hljs-comment">// 从索引 2 开始提取 2 个元素</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>

输出:

<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; </span><span><span class="hljs-number">3</span></span><span>
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; </span><span><span class="hljs-number">4</span></span><span>
)
</span></span>

在这个例子中,array_slice 从索引 2 开始,提取了 2 个元素,返回了一个新的数组 [3, 4]

3. array_valuesarray_slice 结合使用

array_valuesarray_slice 的结合使用能够发挥巨大的优势,特别是在处理不连续的索引数组时。结合这两个函数,我们可以高效地对数组进行切片操作,同时确保返回的数组有正确的键值。

假设你有一个数组,其中包含了一些非连续的索引,使用 array_slice 来切片后,索引可能会不连续。此时,如果你希望确保返回的数组从 0 开始索引,可以在 array_slice 之后使用 array_values 进行重新索引。

示例

<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-number">5</span></span><span> =&gt; </span><span><span class="hljs-string">"apple"</span></span><span>, </span><span><span class="hljs-number">10</span></span><span> =&gt; </span><span><span class="hljs-string">"banana"</span></span><span>, </span><span><span class="hljs-number">15</span></span><span> =&gt; </span><span><span class="hljs-string">"cherry"</span></span><span>];
</span><span><span class="hljs-variable">$sliced</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_slice</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);  </span><span><span class="hljs-comment">// 从索引 1 开始,提取 2 个元素</span></span><span>
</span><span><span class="hljs-variable">$reindexed</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-variable">$sliced</span></span><span>);    </span><span><span class="hljs-comment">// 重新索引</span></span><span>

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$reindexed</span></span><span>);
</span></span>

输出:

<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; banana
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; cherry
)
</span></span>

在这个例子中,array_slice 提取了数组中的 "banana""cherry",但是它们的索引仍然是 0 和 1(源数组中的 10 和 15)。使用 array_values 后,数组的键被重置,从 0 开始,确保了索引的连续性。

4. 提高效率的场景

当处理大规模数据时,尤其是在需要从数组中提取某些部分时,array_slicearray_values 的结合使用显得尤为重要。通过 array_slice 提取需要的部分,减少不必要的数据加载,节省内存;同时通过 array_values 使得返回的数组索引连续,方便后续的处理。

此外,PHP 的 array_slice 函数本身在底层实现上就具有较好的性能,因此与 array_values 一起使用,能够保证代码运行效率和数组操作的简洁性。

5. 小结

通过 array_valuesarray_slice 的结合使用,PHP 开发者可以更灵活、更高效地操作数组。array_slice 用于切片数组,而 array_values 则用于确保索引连续。两者结合后,能够有效地简化代码结构,并提高代码的执行效率,尤其是在处理不规则或非连续索引的数组时,这种技巧能够大大提升数组操作的可维护性。

无论是在处理小规模数组,还是大数据量的数组时,掌握这两个函数的使用技巧,将使得你的 PHP 编程更加得心应手。