本文實例講述了PHP刪除數組中指定值的元素。分享給大家供大家參考,具體如下:
測試數組如下:
- //這是一個測試數組
- $testArr = array(
- 't' => 'qq',
- 'q' => 'qq',
- 'b' => 'baidu',
- 'a' => 'ali',
- 'm' => 'xiaomi'
- );
方法一:
foreach遍歷后unset刪除,這種方法也是最容易想到的方法.
- function delByValue($arr, $value){
- if(!is_array($arr)){
- return $arr;
- }
- foreach($arr as $k=>$v){
- if($v == $value){
- unset($arr[$k]);
- }
- }
- return $arr;
- }
測試:
- $testArr = delByValue($testArr,'baidu');
- print_r($testArr)
運行結果:
- Array
- (
- [t] => qq
- [q] => qq
- [a] => ali
- [m] => xiaomi
- )
方法二:
array_flip之后unset,這種方法有一個弊端,就是反轉后由于有兩個鍵值都為qq,有一個數據將會丟失,所以在使用時請謹慎).
- function delByValue($arr, $value){
- $tempArr = array_flip($arr);
- unset($tempArr[$value]);
- return array_flip($tempArr);
- }
測試:
- $testArr = delByValue($testArr,'baidu');
- print_r($testArr)
運行結果:
- Array
- (
- [q] => qq
- [a] => ali
- [m] => xiaomi
- )
方法三:
array_search,這種方法亦有弊端,array_search搜索到一個合適的值時便返回,所以在數組存在多個相關的值這種方法不適用).
- function delByValue($arr, $value){
- $key = array_search($value,$arr);
- if(isset($key)){
- unset($arr[$key]);
- }
- return $arr;
- }
測試:
$testArr = delByValue($testArr,'baidu');
print_r($testArr)
運行結果:
- Array
- (
- [t] => qq
- [q] => qq
- [a] => ali
- [m] => xiaomi
- )
方法四:
使用array_keys搜索指定的值再循環unset)
- function delByValue($arr, $value){
- $keys = array_keys($arr, $value);
- var_dump($keys);
- if(!emptyempty($keys)){
- foreach ($keys as $key) {
- unset($arr[$key]);
- }
- }
- return $arr;
- }
測試:
- $testArr = delByValue($testArr,'baidu');
- print_r($testArr)
運行結果:
- array(1) {
- [0]=>
- string(1) "b"
- }
- Array
- (
- [t] => qq
- [q] => qq
- [a] => ali
- [m] => xiaomi
- )
四種方法總結下來,真正比較可行的還是方法1和方法4了,至于這兩種方法哪個更好,那就應該是具體情況具體分析了。
新聞熱點
疑難解答