:返回數組中所有的鍵名。如果指定了一個搜索的值,可以過濾出包含該值的所有鍵。
<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>假設我們有一個關聯數組,存儲了多個學生的成績,其中數組的鍵是學生的名字,值是他們的成績。我們希望找出成績為某個特定分數的所有學生。
<span><span><span class="hljs-variable">$students</span></span><span> = [
</span><span><span class="hljs-string">'John'</span></span><span> => </span><span><span class="hljs-number">85</span></span><span>,
</span><span><span class="hljs-string">'Alice'</span></span><span> => </span><span><span class="hljs-number">90</span></span><span>,
</span><span><span class="hljs-string">'Bob'</span></span><span> => </span><span><span class="hljs-number">75</span></span><span>,
</span><span><span class="hljs-string">'Charlie'</span></span><span> => </span><span><span class="hljs-number">85</span></span><span>,
</span><span><span class="hljs-string">'David'</span></span><span> => </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>] => </span><span><span class="hljs-number">85</span></span><span>
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-number">85</span></span><span>
)
</span></span>組合使用array_keys和array_values可以實現很多實際的功能,尤其是當我們需要處理數組的值和鍵時。
假設我們有一個混合的關聯數組,其中有些值可能重複,且我們希望將該數組的鍵提取出來,生成一個僅包含特定值的重建數組。
<span><span><span class="hljs-variable">$items</span></span><span> = [
</span><span><span class="hljs-string">'item1'</span></span><span> => </span><span><span class="hljs-string">'apple'</span></span><span>,
</span><span><span class="hljs-string">'item2'</span></span><span> => </span><span><span class="hljs-string">'orange'</span></span><span>,
</span><span><span class="hljs-string">'item3'</span></span><span> => </span><span><span class="hljs-string">'banana'</span></span><span>,
</span><span><span class="hljs-string">'item4'</span></span><span> => </span><span><span class="hljs-string">'apple'</span></span><span>,
</span><span><span class="hljs-string">'item5'</span></span><span> => </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>] => orange
[</span><span><span class="hljs-number">1</span></span><span>] => orange
)
</span></span>如果你有一個多維數組,你可能需要找出滿足某個條件的數組元素的值。通過組合array_keys和array_values ,我們可以通過某個特定的條件過濾出結果。
<span><span><span class="hljs-variable">$products</span></span><span> = [
</span><span><span class="hljs-string">'P001'</span></span><span> => [</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Laptop'</span></span><span>, </span><span><span class="hljs-string">'price'</span></span><span> => </span><span><span class="hljs-number">800</span></span><span>],
</span><span><span class="hljs-string">'P002'</span></span><span> => [</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Phone'</span></span><span>, </span><span><span class="hljs-string">'price'</span></span><span> => </span><span><span class="hljs-number">400</span></span><span>],
</span><span><span class="hljs-string">'P003'</span></span><span> => [</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Tablet'</span></span><span>, </span><span><span class="hljs-string">'price'</span></span><span> => </span><span><span class="hljs-number">300</span></span><span>],
</span><span><span class="hljs-string">'P004'</span></span><span> => [</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Monitor'</span></span><span>, </span><span><span class="hljs-string">'price'</span></span><span> => </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>] => </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[name] => Phone
[price] => </span><span><span class="hljs-number">400</span></span><span>
)
)
</span></span>array_values和array_keys這兩個函數可以組合使用來完成一些複雜的數組操作。通過合理搭配這兩個函數,可以幫助我們快速查找、過濾和重構數組。這在實際開發中尤為重要,特別是在處理多維數組、過濾數組中的特定值或鍵時,能大大提高代碼的可讀性和效率。
掌握了這兩個函數的組合使用,可以讓我們更靈活地處理數組數據,提高開發效率。
相關標籤:
array_values array_keys