我們在先前的文章中了解了分割一維數組,將一維數組分割成包含指定個數元素二維數組的方法,感興趣的可以點擊鏈接進行查閱→《PHP數組學習之將一維數組變成包含指定多元素的二維數組》。這次我們進行PHP陣列的學習和練習,聊聊在陣列中怎麼去空和去重。
→相關推薦:《PHP數組學習系列大匯總(持續更新~)》
今天本文的主要內容是刪除數組中的空元素和重複元素。
首先我們來看看怎麼刪除陣列中的空元素? 這裡我會介紹兩種方法。
#方法1、foreach循環empty() unset()
#實作想法:
利用foreach語句來遍歷數組$array,在每次循環中將鍵名賦給$key,鍵值賦給$value
foreach($array as $key => $value){ }
在循環中,利用empty()函數來判斷$value是否為空,如果為空則使用unset()刪掉該元素
下面我們給出完整實作碼:
<?php header("content-type:text/html;charset=utf-8"); $array = array("php", 11, '', 12, "PHP中文网", '',2021,"mysql"); var_dump($array); // 使用array_filter()函数从数组中移除空元素 $filtered_array = array_filter($array); echo "删除空元素后的数组"; var_dump($filtered_array); ?>
輸出結果:
說明:在PHP中empty()函數用來檢查一個變數是否被認為是空的。
當變數等於以下的值時empty()會認為是空的:
""(空字串)
0(作為整數的0)
0.0(作為浮點數的0)
「0 」(作為字串的0)
NULL
#FALSE
Array()(一個空數組)
$var (一個宣告了,但是沒有值得變數)
方法2、使用array_filter()函數進行過濾
array_filter() 函數可以用回呼函數來過濾陣列中的元素。此函數會迭代數組中的每個值,將它們傳遞給使用者定義的函數或回調函數。 如果省略回呼函數,則預設會過濾空值。 (array_filter() 函數不會改變原始數組)
<?php header("content-type:text/html;charset=utf-8"); $array = array("php", 11, '', 12, "PHP中文网", '',2021,"mysql",""); var_dump($array); // 使用array_filter()函数从数组中移除空元素 $filtered_array = array_filter($array); echo "删除空元素后的数组"; var_dump($filtered_array); ?>
輸出結果:
可以看出:array_filter()在過濾數組元素時,不會重置索引。刪除空元素後,還是依照原有的索引順序。
那麼如果想要重置索引,從0開始重新排序,要怎麼操作?我們可以使用array_values()
函數。
var_dump(array_values($filtered_array));
是不是很簡單!
上面我們了解了移除空元素的方法,下面我們來看看怎麼去除重複陣列元素。
PHP數組刪除重複數組不用用其他方法,PHP直接就內建了一個函數來實現這個操作,大家知道是什麼函數嗎?
好了,不買關子了,就是array_unique()
函數。如果數組中有兩個或更多值相同,則array_unique()函數只保留第一個值,其他的值被移除。
<?php header("content-type:text/html;charset=utf-8"); $array = array("php", 11, '', 11, "PHP中文网",'',"green",2021,"mysql","","green"); var_dump($array); $result = array_unique($array); echo "删除重复元素后的数组"; //var_dump(array_values($filtered_array)); var_dump($result); ?>
輸出結果:
array_unique()函數也不會重設鍵名(索引),被保留的陣列將保持第一個陣列項的鍵名類型。因此使用array_unique()函數移除重複元素後,可以使用array_values()函數來重設索引。
var_dump(array_values($result));
其實我們還可以利用陣列中不存在重複鍵名的特性來移除重複陣列元素。
實現想法:先將鍵名和鍵值互換來移除重複值;然後在重新將鍵名和鍵值調換回來即可(推薦閱讀《PHP數組學習之怎麼將鍵名key和值的位置進行互換》)。關鍵程式碼:
array_flip(array_flip($array))
好了就說到這裡了,有其他想知道的,可以點擊這個喔。 → →php影片教學
最後推薦給大家一個PHP陣列的免費影片教學:PHP函數之array陣列函數影片講解,快來學習吧!
以上是PHP數組學習如何去除空白或重複的元素的詳細內容。更多資訊請關注PHP中文網其他相關文章!