當前位置: 首頁> 最新文章列表> [怎樣用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()函數。