从PHP数组中删除元素

从PHP数组中删除元素

是否有一种使用PHP从数组中删除元素的简单方法,例如foreach ($array)不再包括那个元素了?

我以为把它设置为null可以做到,但显然不起作用。


海绵宝宝撒
浏览 1076回答 4
4回答

心有法竹

删除数组元素有不同的方法,其中一些对某些特定任务更有用,而另一些则更有用。删除一个数组元素如果只想删除一个数组元素,可以使用\unset()或者另一种选择\array_splice().另外,如果您有这个值,并且不知道要删除可以使用的元素的键\array_search()去拿钥匙。\unset()方法请注意,当您使用\unset()数组键不会更改/重新索引。如果您想重新索引您可以使用的键\array_values()后\unset()它将从0开始将所有键转换为数字枚举键。电码<?php &nbsp;&nbsp;&nbsp;&nbsp;$array&nbsp;=&nbsp;[0&nbsp;=>&nbsp;"a",&nbsp;1&nbsp;=>&nbsp;"b",&nbsp;2&nbsp;=>&nbsp;"c"]; &nbsp;&nbsp;&nbsp;&nbsp;\unset($array[1]); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//↑&nbsp;Key&nbsp;which&nbsp;you&nbsp;want&nbsp;to&nbsp;delete?>输出量[ &nbsp;&nbsp;&nbsp;&nbsp;[0]&nbsp;=>&nbsp;a&nbsp;&nbsp;&nbsp;&nbsp;[2]&nbsp;=>&nbsp;c]\array_splice()方法如果你用\array_splice()键将自动重新编入索引,但关联键不会更改,而不是\array_values()将所有键转换为数字键。也\array_splice()需要偏移,而不是钥匙!作为第二个参数。电码<?php &nbsp;&nbsp;&nbsp;&nbsp;$array&nbsp;=&nbsp;[0&nbsp;=>&nbsp;"a",&nbsp;1&nbsp;=>&nbsp;"b",&nbsp;2&nbsp;=>&nbsp;"c"]; &nbsp;&nbsp;&nbsp;&nbsp;\array_splice($array,&nbsp;1,&nbsp;1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//↑&nbsp;Offset&nbsp;which&nbsp;you&nbsp;want&nbsp;to&nbsp;delete?>输出量[ &nbsp;&nbsp;&nbsp;&nbsp;[0]&nbsp;=>&nbsp;a&nbsp;&nbsp;&nbsp;&nbsp;[1]&nbsp;=>&nbsp;c]array_splice()同\unset()通过引用获取数组,这意味着您不希望将这些函数的返回值分配给数组。删除多个数组元素如果要删除多个数组元素而不想调用\unset()或\array_splice()您可以多次使用这些函数。\array_diff()或\array_diff_key()取决于是否知道要删除的元素的值或键。\array_diff()方法如果您知道要删除的数组元素的值,则可以使用\array_diff()。和以前一样\unset()它不会更改/重新索引数组的键。电码<?php &nbsp;&nbsp;&nbsp;&nbsp;$array&nbsp;=&nbsp;[0&nbsp;=>&nbsp;"a",&nbsp;1&nbsp;=>&nbsp;"b",&nbsp;2&nbsp;=>&nbsp;"c"]; &nbsp;&nbsp;&nbsp;&nbsp;$array&nbsp;=&nbsp;\array_diff($array,&nbsp;["a",&nbsp;"c"]); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//└────────┘→&nbsp;Array&nbsp;values&nbsp;which&nbsp;you&nbsp;want&nbsp;to&nbsp;delete?>输出量[ &nbsp;&nbsp;&nbsp;&nbsp;[1]&nbsp;=>&nbsp;b]\array_diff_key()方法如果您知道要删除的元素的键,则要使用\array_diff_key()。在这里,您必须确保将键作为第二个参数中的键传递,而不是作为值传递。否则,必须将数组翻转为\array_flip()。在这里,键不会更改/重新索引。电码<?php &nbsp;&nbsp;&nbsp;&nbsp;$array&nbsp;=&nbsp;[0&nbsp;=>&nbsp;"a",&nbsp;1&nbsp;=>&nbsp;"b",&nbsp;2&nbsp;=>&nbsp;"c"]; &nbsp;&nbsp;&nbsp;&nbsp;$array&nbsp;=&nbsp;\array_diff_key($array,&nbsp;[0&nbsp;=>&nbsp;"xy",&nbsp;"2"&nbsp;=>&nbsp;"xy"]); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//↑&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↑&nbsp;Array&nbsp;keys&nbsp;which&nbsp;you&nbsp;want&nbsp;to&nbsp;delete?>输出量[ &nbsp;&nbsp;&nbsp;&nbsp;[1]&nbsp;=>&nbsp;b]如果你想用\unset()或\array_splice()若要删除具有相同值的多个元素,请使用\array_keys()若要获取特定值的所有键,然后删除所有元素,请执行以下操作。

白衣染霜花

应该指出,unset()将使索引保持不变,这是在使用字符串索引(数组作为哈希表)时所期望的,但在处理整数索引数组时可能会非常令人惊讶:$array&nbsp;=&nbsp;array(0,&nbsp;1,&nbsp;2,&nbsp;3);unset($array[2]);var_dump($array);/*&nbsp;array(3)&nbsp;{ &nbsp;&nbsp;[0]=> &nbsp;&nbsp;int(0) &nbsp;&nbsp;[1]=> &nbsp;&nbsp;int(1) &nbsp;&nbsp;[3]=> &nbsp;&nbsp;int(3) }&nbsp;*/$array&nbsp;=&nbsp;array(0,&nbsp;1,&nbsp;2,&nbsp;3);array_splice($array,&nbsp;2,&nbsp;1);var_dump($array);/*&nbsp;array(3)&nbsp;{ &nbsp;&nbsp;[0]=> &nbsp;&nbsp;int(0) &nbsp;&nbsp;[1]=> &nbsp;&nbsp;int(1) &nbsp;&nbsp;[2]=> &nbsp;&nbsp;int(3) }&nbsp;*/所以array_splice()如果您希望将整数键规范化,则可以使用。另一个选项是使用array_values()后unset():$array&nbsp;=&nbsp;array(0,&nbsp;1,&nbsp;2,&nbsp;3);unset($array[2]);$array&nbsp;=&nbsp;array_values($array);var_dump($array);/*&nbsp;array(3)&nbsp;{ &nbsp;&nbsp;[0]=> &nbsp;&nbsp;int(0) &nbsp;&nbsp;[1]=> &nbsp;&nbsp;int(1) &nbsp;&nbsp;[2]=> &nbsp;&nbsp;int(3) }&nbsp;*/

HUH函数

&nbsp;//&nbsp;Our&nbsp;initial&nbsp;array &nbsp;&nbsp;$arr&nbsp;=&nbsp;array("blue",&nbsp;"green",&nbsp;"red",&nbsp;"yellow",&nbsp;"green",&nbsp;"orange",&nbsp;"yellow",&nbsp;"indigo",&nbsp;"red"); &nbsp;&nbsp;print_r($arr); &nbsp;&nbsp;//&nbsp;Remove&nbsp;the&nbsp;elements&nbsp;who's&nbsp;values&nbsp;are&nbsp;yellow&nbsp;or&nbsp;red &nbsp;&nbsp;$arr&nbsp;=&nbsp;array_diff($arr,&nbsp;array("yellow",&nbsp;"red")); &nbsp;&nbsp;print_r($arr);这是上面代码的输出:Array( &nbsp;&nbsp;&nbsp;&nbsp;[0]&nbsp;=>&nbsp;blue&nbsp;&nbsp;&nbsp;&nbsp;[1]&nbsp;=>&nbsp;green&nbsp;&nbsp;&nbsp;&nbsp;[2]&nbsp;=>&nbsp;red&nbsp;&nbsp;&nbsp;&nbsp;[3]&nbsp;=>&nbsp;yellow&nbsp;&nbsp;&nbsp;&nbsp;[4]&nbsp;=>&nbsp;green&nbsp;&nbsp;&nbsp;&nbsp;[5]&nbsp;=>&nbsp;orange&nbsp;&nbsp;&nbsp;&nbsp;[6]&nbsp;=>&nbsp;yellow&nbsp;&nbsp;&nbsp;&nbsp;[7]&nbsp;=>&nbsp;indigo &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[8]&nbsp;=>&nbsp;red)Array( &nbsp;&nbsp;&nbsp;&nbsp;[0]&nbsp;=>&nbsp;blue&nbsp;&nbsp;&nbsp;&nbsp;[1]&nbsp;=>&nbsp;green&nbsp;&nbsp;&nbsp;&nbsp;[4]&nbsp;=>&nbsp;green&nbsp;&nbsp;&nbsp;&nbsp;[5]&nbsp;=>&nbsp;orange&nbsp;&nbsp;&nbsp;&nbsp;[7]&nbsp;=>&nbsp;indigo)现在,Array_value()将很好地重新索引一个数字数组,但它将从数组中删除所有键字符串,并将它们替换为数字。如果需要保留键名(字符串),或者如果所有键都是数字的,则重新索引数组,请使用Array_Merge():$arr&nbsp;=&nbsp;array_merge(array_diff($arr,&nbsp;array("yellow",&nbsp;"red")));print_r($arr);产出Array( &nbsp;&nbsp;&nbsp;&nbsp;[0]&nbsp;=>&nbsp;blue&nbsp;&nbsp;&nbsp;&nbsp;[1]&nbsp;=>&nbsp;green&nbsp;&nbsp;&nbsp;&nbsp;[2]&nbsp;=>&nbsp;green&nbsp;&nbsp;&nbsp;&nbsp;[3]&nbsp;=>&nbsp;orange&nbsp;&nbsp;&nbsp;&nbsp;[4]&nbsp;=>&nbsp;indigo)

偶然的你

$key&nbsp;=&nbsp;array_search($needle,&nbsp;$array);if&nbsp;($key&nbsp;!==&nbsp;false)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;unset($array[$key]);}
打开App,查看更多内容
随时随地看视频慕课网APP