首頁  >  文章  >  後端開發  >  php array怎麼會根據值刪除

php array怎麼會根據值刪除

藏色散人
藏色散人原創
2021-09-10 11:01:282147瀏覽

php array根據值刪除的方法:1、透過foreach遍歷後用unset刪除;2、透過array_flip之後用unset刪除;3、透過array_search刪除;4、使用array_keys搜尋指定的值再循環刪除。

php array怎麼會根據值刪除

本文操作環境:windows7系統、PHP7.1版,DELL G3電腦

php array怎麼會根據值刪除?

PHP刪除數組中指定值的元素常用方法

#本文實例講述了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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn