PHP网络编程中,你可能需要删除数组中的一些元素,在本文章中,我们将演示并描述php如何删除数组元素。

文章一共列举了三种方法来实现这一功能:

  1. php unset()函数
  2. php array_splice()函数
  3. php array_diff()函数

PHP unset()函数删除数组元素

如果要从数组中删除元素,则可以简单地使用该php unset() 函数.

以下示例显示如何从关联数组和数字数组中删除元素。


$num_array = [“Amanda”, “John”, “Kelly”, “Megan”, “Henry”];
$asc_array = [“first” => “Amanda”, “second” => “John”,
“third” => “Kelly”, “fourth” => “Megan”,
“fifth” => “Henry”];
$key = array_search(“John”, $num_array);
unset($num_array[$key]);
print_r($num_array);
/* Output —
Array
(
[0] => Amanda
[2] => Kelly
[3] => Megan
[4] => Henry
) */
$key = array_search(“John”, $asc_array);
unset($asc_array[$key]);
print_r($asc_array);
/* Output —
Array
(
[first] => Amanda
[third] => Kelly
[fourth] => Megan
[fifth] => Henry
) */

注意,如果你使用 unset() 方法,它是不会改变其他的键(key),如果你想对其他的键(key)重新整理排序,可以使用 array_values()。

范例:


<?php
$my_arr = array( ‘this’, ‘is’, ‘a’, ‘sample’, ‘only’);
echo”The array is “;
var_dump($my_arr);
unset($my_arr[4]);
echo”The array is now “;
$my_arr_2 = array_values($my_arr);
var_dump($my_arr_2);
?>

输出:


The array is array(5) {
[0]=>
string(4) “this”
[1]=>
string(2) “is”
[2]=>
string(1) “a”
[3]=>
string(6) “sample”
[4]=>
string(4) “only”
}
The array is now array(4) {
[0]=>
string(4) “this”
[1]=>
string(2) “is”
[2]=>
string(1) “a”
[3]=>
string(6) “sample”
}

PHP array_splice()函数删除数组元素

array_splice 函数可用于删除数组中任何位置的元素。下面的示例演示了从数组偏移量3(即第4个元素)开始删除两个元素:


$ar = array(‘Rudi’, ‘Morie’, ‘Halo’, ‘Miki’, ‘Mittens’, ‘Pumpkin’, ‘Coco’);
$r = array_splice($ar, 3, 2);
// view array returned by array_splice (array of removed elements)
print_r($r);
/* Array
(
[0] => Miki
[1] => Mittens
)
*/
// view modified $ar
print_r($ar);
/* Array
(
[0] => Rudi
[1] => Morie
[2] => Halo
[3] => Pumpkin
[4] => Coco
)
*/

如果省略第三个参数,则删除从偏移量到素组末尾的所有元素。示例如下:


$ar = array(‘Rudi’, ‘Morie’, ‘Halo’, ‘Miki’, ‘Mittens’, ‘Pumpkin’, ‘Coco’);
// remove from offset 4 to end of $ar
$r = array_splice($ar, 4);
// view array returned by array_splice
print_r($r);
/* Array
(
[0] => Mittens
[1] => Pumpkin
[2] => Coco
) */
// view modified $ar
print_r($ar);
/* Array
(
[0] => Rudi
[1] => Morie
[2] => Halo
[3] => Miki
) */

下面的示例演示如何使用负偏移量从数组中删除最后三个元素:


$ar = array(‘Rudi’, ‘Morie’, ‘Halo’, ‘Miki’, ‘Mittens’, ‘Pumpkin’, ‘Coco’);
// array_splice with negative offset
$r = array_splice($ar, -3, 3);
// display array returned by array_splice
print_r($r);
/* Array
(
[0] => Mittens
[1] => Pumpkin
[2] => Coco
) */
// view modified $ar
print_r($ar);
/* Array
(
[0] => Rudi
[1] => Morie
[2] => Halo
[3] => Miki
) */

PHP array_diff()或array_diff_key()函数删除数组元素

如果你想删除多维数组中的元素并且你又不想多次调用unset()和array_splice(),这时你可以使用array_diff() 或者 array_diff_key(),array_diff() 和 array_diff_key()区别在于array_diff()是根据值删除,而array_diff_key()根据键删除。

如果你知道要删除的数组元素, 你可以使用 array_diff()。


$array = [0 => “a”, 1 => “b”, 2 => “c”, 3 => “c”];
$array = array_diff($array, [“a”, “c”]);
// └────────┘
// Array values which you want to delete

结果:


[
[1] => b
]
如果你知道要删除的数组元素的键(key), 你可以使用 array_diff_key()。你需要在函数的第二个参数的键值位置输入要删除的键,值不需要,可随意。

$array = [0 => “a”, 1 => “b”, 2 => “c”];
$array = array_diff_key($array, [0 => “xy”, “2” => “xy”]);
// ↑ ↑
// Array keys which you want to delete

结果:

[
[1] => b
]