在PHP网络编程中,你可能需要删除数组中的一些元素,在本文章中,我们将演示并描述php如何删除数组元素。
文章一共列举了三种方法来实现这一功能:
如果要从数组中删除元素,则可以简单地使用该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" }
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 ) */
如果你想删除多维数组中的元素并且你又不想多次调用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 ]
以上就是本文的全部内容,希望对大家的学习有所帮助。更多教程请访问码农之家