首頁 >後端開發 >php教程 >php如何刪除陣列中的某個元素用法總結

php如何刪除陣列中的某個元素用法總結

伊谢尔伦
伊谢尔伦原創
2017-06-24 10:04:251600瀏覽

從array裡去掉$tmp這個元素的值

<?php
$tmp = &#39;324&#39;;
$arr = array(&#39;0&#39; => &#39;321&#39;,&#39;1&#39; => &#39;322&#39;,&#39;2&#39; => &#39;323&#39;,&#39;3&#39; => &#39;324&#39;,&#39;4&#39; => &#39;325&#39;,&#39;5&#39; => &#39;326&#39;,
);

程式碼

<?php
foreach( $arr as $k=>$v) {
    if($tmp == $v) unset($arr[$k]);
}
print_r($arr);
?>

此時

Array(
    [0] => 321
    [1] => 322
    [2] => 323
    [4] => 325
    [5] => 326
)

要重設索引,加上一句

<?php
foreach( $arr as $k=>$v) {
    if($tmp == $v) unset($arr[$k]);
}
$arr = array_values($arr);
print_r($arr);
?>

此時結果

Array(
    [0] => 321
    [1] => 322
    [2] => 323
    [3] => 325
    [4] => 326
)

array_merge()也可以實現相同的效果

<?php
foreach( $arr as $k=>$v) {
    if($tmp == $v) unset($arr[$k]);
}
$arr = array_merge($arr);
print_r($arr);
?>

此時結果

Array(
    [0] => 321
    [1] => 322
    [2] => 323
    [3] => 325
    [4] => 326
)

2.優先使用php自帶函數,因為那是用C實現的,比自己寫效率高。

  1. 使用array_searcharray_splice,這裡array_splice自動實作重設序列值。

$key=array_search($tmp ,$arr);
array_splice($arr,$key,1);
var_dump($arr);

此時結果

Array(
    [0] => 321
    [1] => 322
    [2] => 323
    [3] => 325
    [4] => 326
)
  1. #最佳實踐

$arr = array_merge(array_diff($arr, array($tmp)));
var_dump($arr);

結果

Array(
    [0] => 321
    [1] => 322
    [2] => 323
    [3] => 325
    [4] => 326
)

這裡,如果陣列元素是複雜資料結構,同樣能夠實現比較。當然數據本身仍然是一維的。
上面的範例中$tmp是一個值,如果$tmp是一個陣列或其他複雜資料結構,從$array中刪除所有$tmp包含的元素,上面的方法同樣有效

$arr = array_merge(array_diff($arr, $tmp));
var_dump($arr);

以上是php如何刪除陣列中的某個元素用法總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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