當前位置: 首頁> 最新文章列表> [PHP中array_values和array_keys函數如何組合使用?詳細實例解析

[PHP中array_values和array_keys函數如何組合使用?詳細實例解析

gitbox 2025-08-25

1. 基本介紹

  • :返回數組中所有的鍵名。如果指定了一個搜索的值,可以過濾出包含該值的所有鍵。

     <span><span><span class="hljs-title function_ invoke__">array_keys</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>, </span><span><span class="hljs-variable">$search_value</span></span><span>, </span><span><span class="hljs-variable">$strict</span></span><span>);
    </span></span>
  • array_values函數:返回數組中所有的值,忽略鍵名,重新索引。

     <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>

2. 簡單示例

假設我們有一個關聯數組,存儲了多個學生的成績,其中數組的鍵是學生的名字,值是他們的成績。我們希望找出成績為某個特定分數的所有學生。

 <span><span><span class="hljs-variable">$students</span></span><span> = [
    </span><span><span class="hljs-string">'John'</span></span><span> =&gt; </span><span><span class="hljs-number">85</span></span><span>,
    </span><span><span class="hljs-string">'Alice'</span></span><span> =&gt; </span><span><span class="hljs-number">90</span></span><span>,
    </span><span><span class="hljs-string">'Bob'</span></span><span> =&gt; </span><span><span class="hljs-number">75</span></span><span>,
    </span><span><span class="hljs-string">'Charlie'</span></span><span> =&gt; </span><span><span class="hljs-number">85</span></span><span>,
    </span><span><span class="hljs-string">'David'</span></span><span> =&gt; </span><span><span class="hljs-number">95</span></span><span>
];

</span><span><span class="hljs-variable">$search_score</span></span><span> = </span><span><span class="hljs-number">85</span></span><span>;

</span><span><span class="hljs-comment">// 獲取所有成績為85的學生</span></span><span>
</span><span><span class="hljs-variable">$keys</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_keys</span></span><span>(</span><span><span class="hljs-variable">$students</span></span><span>, </span><span><span class="hljs-variable">$search_score</span></span><span>);
</span><span><span class="hljs-variable">$students_with_score</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_intersect_key</span></span><span>(</span><span><span class="hljs-variable">$students</span></span><span>, </span><span><span class="hljs-title function_ invoke__">array_flip</span></span><span>(</span><span><span class="hljs-variable">$keys</span></span><span>)));

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$students_with_score</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">85</span></span><span>
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; </span><span><span class="hljs-number">85</span></span><span>
)
</span></span>

3. 組合使用的場景

組合使用array_keysarray_values可以實現很多實際的功能,尤其是當我們需要處理數組的值和鍵時。

示例1:根據值過濾出鍵,並重建一個索引數組

假設我們有一個混合的關聯數組,其中有些值可能重複,且我們希望將該數組的鍵提取出來,生成一個僅包含特定值的重建數組。

 <span><span><span class="hljs-variable">$items</span></span><span> = [
    </span><span><span class="hljs-string">'item1'</span></span><span> =&gt; </span><span><span class="hljs-string">'apple'</span></span><span>,
    </span><span><span class="hljs-string">'item2'</span></span><span> =&gt; </span><span><span class="hljs-string">'orange'</span></span><span>,
    </span><span><span class="hljs-string">'item3'</span></span><span> =&gt; </span><span><span class="hljs-string">'banana'</span></span><span>,
    </span><span><span class="hljs-string">'item4'</span></span><span> =&gt; </span><span><span class="hljs-string">'apple'</span></span><span>,
    </span><span><span class="hljs-string">'item5'</span></span><span> =&gt; </span><span><span class="hljs-string">'orange'</span></span><span>
];

</span><span><span class="hljs-variable">$filter_value</span></span><span> = </span><span><span class="hljs-string">'orange'</span></span><span>;

</span><span><span class="hljs-comment">// 獲取包含"orange"的所有鍵</span></span><span>
</span><span><span class="hljs-variable">$keys</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_keys</span></span><span>(</span><span><span class="hljs-variable">$items</span></span><span>, </span><span><span class="hljs-variable">$filter_value</span></span><span>);

</span><span><span class="hljs-comment">// 使用array_values獲取這些鍵對應的值</span></span><span>
</span><span><span class="hljs-variable">$filtered_values</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_intersect_key</span></span><span>(</span><span><span class="hljs-variable">$items</span></span><span>, </span><span><span class="hljs-title function_ invoke__">array_flip</span></span><span>(</span><span><span class="hljs-variable">$keys</span></span><span>)));

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$filtered_values</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; orange
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; orange
)
</span></span>
示例2:過濾鍵名為特定值的所有項

如果你有一個多維數組,你可能需要找出滿足某個條件的數組元素的值。通過組合array_keysarray_values ,我們可以通過某個特定的條件過濾出結果。

 <span><span><span class="hljs-variable">$products</span></span><span> = [
    </span><span><span class="hljs-string">'P001'</span></span><span> =&gt; [</span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Laptop'</span></span><span>, </span><span><span class="hljs-string">'price'</span></span><span> =&gt; </span><span><span class="hljs-number">800</span></span><span>],
    </span><span><span class="hljs-string">'P002'</span></span><span> =&gt; [</span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Phone'</span></span><span>, </span><span><span class="hljs-string">'price'</span></span><span> =&gt; </span><span><span class="hljs-number">400</span></span><span>],
    </span><span><span class="hljs-string">'P003'</span></span><span> =&gt; [</span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Tablet'</span></span><span>, </span><span><span class="hljs-string">'price'</span></span><span> =&gt; </span><span><span class="hljs-number">300</span></span><span>],
    </span><span><span class="hljs-string">'P004'</span></span><span> =&gt; [</span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Monitor'</span></span><span>, </span><span><span class="hljs-string">'price'</span></span><span> =&gt; </span><span><span class="hljs-number">600</span></span><span>],
];

</span><span><span class="hljs-variable">$target_price</span></span><span> = </span><span><span class="hljs-number">400</span></span><span>;

</span><span><span class="hljs-comment">// 獲取所有價格等於400的商品</span></span><span>
</span><span><span class="hljs-variable">$product_keys</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_keys</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_column</span></span><span>(</span><span><span class="hljs-variable">$products</span></span><span>, </span><span><span class="hljs-string">'price'</span></span><span>), </span><span><span class="hljs-variable">$target_price</span></span><span>);

</span><span><span class="hljs-comment">// 獲取這些商品的詳細信息</span></span><span>
</span><span><span class="hljs-variable">$target_products</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_intersect_key</span></span><span>(</span><span><span class="hljs-variable">$products</span></span><span>, </span><span><span class="hljs-title function_ invoke__">array_flip</span></span><span>(</span><span><span class="hljs-variable">$product_keys</span></span><span>)));

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$target_products</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>
        (
            [name] =&gt; Phone
            [price] =&gt; </span><span><span class="hljs-number">400</span></span><span>
        )
)
</span></span>

4. 總結

array_valuesarray_keys這兩個函數可以組合使用來完成一些複雜的數組操作。通過合理搭配這兩個函數,可以幫助我們快速查找、過濾和重構數組。這在實際開發中尤為重要,特別是在處理多維數組、過濾數組中的特定值或鍵時,能大大提高代碼的可讀性和效率。

掌握了這兩個函數的組合使用,可以讓我們更靈活地處理數組數據,提高開發效率。