当前位置: 首页> 最新文章列表> [怎样用array_values函数获取PHP多维数组中的所有值?操作步骤详解

[怎样用array_values函数获取PHP多维数组中的所有值?操作步骤详解

gitbox 2025-09-09

1. array_values()函数基础介绍

array_values()是PHP的内置函数,用于返回数组中所有的值,且返回的数组是一个没有键名的数组,所有的键都会被重新索引(从0开始)。

函数定义:

<span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array</span></span><span>) : </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
  • $array:输入的数组,array_values()会返回这个数组中所有的值。

  • 返回值:一个新的数组,其中包含了原数组中的所有值,并且原数组的键名被重置为连续的数字(从0开始)。

2. array_values()的基本应用

首先,我们来看一个简单的例子,展示如何在普通数组中使用array_values()

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [
    </span><span><span class="hljs-number">1</span></span><span> =&gt; </span><span><span class="hljs-string">'apple'</span></span><span>,
    </span><span><span class="hljs-number">2</span></span><span> =&gt; </span><span><span class="hljs-string">'banana'</span></span><span>,
    </span><span><span class="hljs-number">3</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">$arr</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 class="hljs-meta">?&gt;</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>

可以看到,原数组的键名(1、2、3)已经被重置为0、1、2,并且值依然保留。

3. 在多维数组中使用array_values()

对于多维数组,我们同样可以使用array_values()来提取其中的值。但要注意,array_values()只会作用于数组的最外层,而不会递归地遍历内部的子数组。如果需要获取多维数组中的所有值,需要额外处理。

3.1 提取二维数组中的值

假设我们有一个二维数组,其中包含多个子数组,我们希望从中提取所有的值:

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [
    </span><span><span class="hljs-string">"fruit"</span></span><span> =&gt; [</span><span><span class="hljs-string">"apple"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>],
    </span><span><span class="hljs-string">"vegetable"</span></span><span> =&gt; [</span><span><span class="hljs-string">"carrot"</span></span><span>, </span><span><span class="hljs-string">"tomato"</span></span><span>],
    </span><span><span class="hljs-string">"meat"</span></span><span> =&gt; [</span><span><span class="hljs-string">"chicken"</span></span><span>, </span><span><span class="hljs-string">"beef"</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">$arr</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 class="hljs-meta">?&gt;</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-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">1</span></span><span>] =&gt; </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
        (
            [</span><span><span class="hljs-number">0</span></span><span>] =&gt; carrot
            [</span><span><span class="hljs-number">1</span></span><span>] =&gt; tomato
        )
    [</span><span><span class="hljs-number">2</span></span><span>] =&gt; </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
        (
            [</span><span><span class="hljs-number">0</span></span><span>] =&gt; chicken
            [</span><span><span class="hljs-number">1</span></span><span>] =&gt; beef
        )
)
</span></span>

可以看到,array_values()只操作了外层数组,并没有改变每个子数组的内容。

3.2 递归提取所有值

如果我们希望获取多维数组中的所有值,且不保留任何键名,可以通过递归的方式处理。使用array_map()函数结合array_values()可以达到此目的:

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">get_all_values</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$array</span></span></span><span>) {
    </span><span><span class="hljs-variable">$values</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-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$values</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> &amp;</span><span><span class="hljs-variable">$value</span></span><span>) {
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>)) {
            </span><span><span class="hljs-variable">$value</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_all_values</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>); </span><span><span class="hljs-comment">// 递归处理内部数组</span></span><span>
        }
    }
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$values</span></span><span>;
}

</span><span><span class="hljs-variable">$arr</span></span><span> = [
    </span><span><span class="hljs-string">"fruit"</span></span><span> =&gt; [</span><span><span class="hljs-string">"apple"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>],
    </span><span><span class="hljs-string">"vegetable"</span></span><span> =&gt; [</span><span><span class="hljs-string">"carrot"</span></span><span>, </span><span><span class="hljs-string">"tomato"</span></span><span>],
    </span><span><span class="hljs-string">"meat"</span></span><span> =&gt; [</span><span><span class="hljs-string">"chicken"</span></span><span>, </span><span><span class="hljs-string">"beef"</span></span><span>]
];

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_all_values</span></span><span>(</span><span><span class="hljs-variable">$arr</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 class="hljs-meta">?&gt;</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; carrot
    [</span><span><span class="hljs-number">3</span></span><span>] =&gt; tomato
    [</span><span><span class="hljs-number">4</span></span><span>] =&gt; chicken
    [</span><span><span class="hljs-number">5</span></span><span>] =&gt; beef
)
</span></span>

通过递归,我们成功地将多维数组中的所有值提取出来,并返回一个扁平化的数组。

4. array_values()array_merge()的结合使用

有时,我们希望将多维数组的所有值合并成一个单一的数组。在这种情况下,array_values()可以与array_merge()结合使用:

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [
    </span><span><span class="hljs-string">"fruit"</span></span><span> =&gt; [</span><span><span class="hljs-string">"apple"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>],
    </span><span><span class="hljs-string">"vegetable"</span></span><span> =&gt; [</span><span><span class="hljs-string">"carrot"</span></span><span>, </span><span><span class="hljs-string">"tomato"</span></span><span>],
    </span><span><span class="hljs-string">"meat"</span></span><span> =&gt; [</span><span><span class="hljs-string">"chicken"</span></span><span>, </span><span><span class="hljs-string">"beef"</span></span><span>]
];

</span><span><span class="hljs-variable">$flattened</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_merge</span></span><span>(
    </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>[</span><span><span class="hljs-string">'fruit'</span></span><span>]),
    </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>[</span><span><span class="hljs-string">'vegetable'</span></span><span>]),
    </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>[</span><span><span class="hljs-string">'meat'</span></span><span>])
);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$flattened</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</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; carrot
    [</span><span><span class="hljs-number">3</span></span><span>] =&gt; tomato
    [</span><span><span class="hljs-number">4</span></span><span>] =&gt; chicken
    [</span><span><span class="hljs-number">5</span></span><span>] =&gt; beef
)
</span></span>

通过这种方式,我们可以将多个子数组合并到一个数组中,方便后续处理。

5. 总结

array_values()是一个非常有用的PHP函数,尤其在处理多维数组时,可以方便地提取所有的值。虽然它本身不支持递归地提取所有子数组的值,但通过编写递归函数或结合其他PHP函数,我们可以轻松实现这一功能。

希望本文通过具体的例子,能够帮助大家更好地理解和使用array_values()函数。