PHP如何在不使用迴圈的情況下將奇數和偶數元素與陣列分開?
在PHP中,您將會得到n個元素的陣列。您必須根據元素奇數或偶數將元素與陣列分開。也就是說,分別列印奇數數組和偶數數組而不遍歷原始數組或使用任何循環。
範例:
输入: array(2, 5, 6, 3, 0) 输出: 奇数array: 5 , 3 偶数array: 2, 6, 0 输入: $input = array(0, 1, 2, 3, 4, 5) 输出: 奇数array: 1, 3, 5 偶数array: 0, 2, 4
透過遍歷數組並列印奇數甚至單獨的元素可以輕鬆解決這些類型的問題,但這會佔用更多的程式碼行,並且程式碼中也會出現循環開銷。因此,為了避免使用循環,我們將嘗試使用PHP的一些內建函數。這裡我們使用兩個PHP陣列函數array_filter()和array_values()來解決這個問題。
array_filter():此函數將用於過濾輸入陣列中的奇數/偶數元素。
array_values():此函數將用於重新索引奇數和偶數數組,因為array_filter奇數和偶數數組具有與其元素在輸入數組中具有的索引相同的索引。
注意: array_filter()函數只會過濾奇數/偶數索引元素及其索引值。應用array_filter()函數後,奇數數組的索引將為1,3,5,偶數數組的索引將為0,2,4。
演算法:
過濾元素:
透過array_filter()過濾奇數元素。
透過array_filter()過濾偶數元素。
重新索引陣列:
使用array_values()重新索引奇數數組。
使用array_values()重新索引偶數數組。
列印奇數/偶數數組。
以下是上述演算法的PHP實作:
<?php $input = array(4, 3, 6, 5, 8, 7, 2); function oddCmp($input) { return ($input & 1); } function evenCmp($input) { return !($input & 1); } $odd = array_filter($input, "oddCmp"); $even = array_filter($input, "evenCmp"); $odd = array_values(array_filter($odd)); $even = array_values(array_filter($even)); print"奇数数组:\n"; print_r($odd); print"偶数数组:\n"; print_r($even); ?>
輸出如下圖:
以上是php數組如何將奇數偶數分開的詳細內容。更多資訊請關注PHP中文網其他相關文章!