本文實例講述了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(!empty($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了,至于這兩種方法哪個更好,那就應該是具體情況具體分析了。
更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數組(Array)操作技巧大全》、《php排序算法總結》、《PHP數據結構與算法教程》、《php程序設計算法總結》、《php字符串(string)用法總結》及《PHP常用遍歷算法與技巧總結》
希望本文所述對大家PHP程序設計有所幫助。
您可能感興趣的文章:- PHP實現動態刪除XML數據的方法示例
- php刪除二維數組中的重復值方法
- php刪除一個路徑下的所有文件夾和文件的方法
- PHP刪除數組中指定下標的元素方法
- php 刪除一維數組中某一個值元素的操作方法
- 實現php刪除鏈表中重復的結點