-
心有法竹
删除数组元素有不同的方法,其中一些对某些特定任务更有用,而另一些则更有用。删除一个数组元素如果只想删除一个数组元素,可以使用\unset()或者另一种选择\array_splice().另外,如果您有这个值,并且不知道要删除可以使用的元素的键\array_search()去拿钥匙。\unset()方法请注意,当您使用\unset()数组键不会更改/重新索引。如果您想重新索引您可以使用的键\array_values()后\unset()它将从0开始将所有键转换为数字枚举键。电码<?php
$array = [0 => "a", 1 => "b", 2 => "c"];
\unset($array[1]);
//↑ Key which you want to delete?>输出量[
[0] => a [2] => c]\array_splice()方法如果你用\array_splice()键将自动重新编入索引,但关联键不会更改,而不是\array_values()将所有键转换为数字键。也\array_splice()需要偏移,而不是钥匙!作为第二个参数。电码<?php
$array = [0 => "a", 1 => "b", 2 => "c"];
\array_splice($array, 1, 1);
//↑ Offset which you want to delete?>输出量[
[0] => a [1] => c]array_splice()同\unset()通过引用获取数组,这意味着您不希望将这些函数的返回值分配给数组。删除多个数组元素如果要删除多个数组元素而不想调用\unset()或\array_splice()您可以多次使用这些函数。\array_diff()或\array_diff_key()取决于是否知道要删除的元素的值或键。\array_diff()方法如果您知道要删除的数组元素的值,则可以使用\array_diff()。和以前一样\unset()它不会更改/重新索引数组的键。电码<?php
$array = [0 => "a", 1 => "b", 2 => "c"];
$array = \array_diff($array, ["a", "c"]);
//└────────┘→ Array values which you want to delete?>输出量[
[1] => b]\array_diff_key()方法如果您知道要删除的元素的键,则要使用\array_diff_key()。在这里,您必须确保将键作为第二个参数中的键传递,而不是作为值传递。否则,必须将数组翻转为\array_flip()。在这里,键不会更改/重新索引。电码<?php
$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]如果你想用\unset()或\array_splice()若要删除具有相同值的多个元素,请使用\array_keys()若要获取特定值的所有键,然后删除所有元素,请执行以下操作。
-
白衣染霜花
应该指出,unset()将使索引保持不变,这是在使用字符串索引(数组作为哈希表)时所期望的,但在处理整数索引数组时可能会非常令人惊讶:$array = array(0, 1, 2, 3);unset($array[2]);var_dump($array);/* array(3) {
[0]=>
int(0)
[1]=>
int(1)
[3]=>
int(3)
} */$array = array(0, 1, 2, 3);array_splice($array, 2, 1);var_dump($array);/* array(3) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(3)
} */所以array_splice()如果您希望将整数键规范化,则可以使用。另一个选项是使用array_values()后unset():$array = array(0, 1, 2, 3);unset($array[2]);$array = array_values($array);var_dump($array);/* array(3) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(3)
} */
-
HUH函数
// Our initial array
$arr = array("blue", "green", "red", "yellow", "green", "orange", "yellow", "indigo", "red");
print_r($arr);
// Remove the elements who's values are yellow or red
$arr = array_diff($arr, array("yellow", "red"));
print_r($arr);这是上面代码的输出:Array(
[0] => blue [1] => green [2] => red [3] => yellow [4] => green [5] => orange [6] => yellow [7] => indigo
[8] => red)Array(
[0] => blue [1] => green [4] => green [5] => orange [7] => indigo)现在,Array_value()将很好地重新索引一个数字数组,但它将从数组中删除所有键字符串,并将它们替换为数字。如果需要保留键名(字符串),或者如果所有键都是数字的,则重新索引数组,请使用Array_Merge():$arr = array_merge(array_diff($arr, array("yellow", "red")));print_r($arr);产出Array(
[0] => blue [1] => green [2] => green [3] => orange [4] => indigo)
-
偶然的你
$key = array_search($needle, $array);if ($key !== false) {
unset($array[$key]);}