|
有没有一种简单的方法可以用 PHP 从数组中删除一个元素foreach ($array)不再包含这个元素?. @6 F* u( e# m) }- m% B
我认为把它设置为null可以做到这一点,但显然不起作用。
8 w& f# P% @; ^
+ q5 R2 D: ^: o' V M+ L 解决方案:
5 J* E& O l* W$ T9 _" h 删除数组元素的方法有很多,其中一些比其他方法更有用。
' q2 p# L. @# u$ L! Q" ^删除单个数组元素如果您只想删除数组元素,您可以使用它unset()或者\array_splice().
" X h8 o0 G' H4 P) [如果您知道值并且不知道删除元素的键,您可以使用它\array_search()获取键。这只有在元素不多次出现时才有效,因为\array_search仅返回第一次命中。 F/ G0 ]9 U, {
unset()使用时请注意unset()数组键不会改变。如果需要重新索引,可以使用。\array_values()after的键unset(),这将把所有键转换成从 0 开始的数字枚举键。
" L0 H" S" ^" k/ t9 `3 _) B代码:
* \ P& t/ D( [- J, v4 y- ]$array = [0 => "a",1 => "b",2 => "c"];unset($array[1]); ↑ Key which you want to delete
1 Y, I% k8 U% E C* y7 Z 输出:: e. G: U! J. P9 T1 S4 D& `
[0] => a [2] => c]
$ Q$ I+ w- T1 P% B& W" D. p \array_splice()方法如果您使用\array_splice()这些键会自动重新索引,但关联键不会改变 - 与 相反\array_values(),它将所有键转换为数字键。
* U/ u, H! c3 a9 @& \7 T, Q5 V\array_splice()需要offset而不是key作为第二个参数。
3 U% B8 @0 w& S代码:
3 {$ H7 s' ~+ X$array = [0 => "a",1 => "b",2 => "c"];\array_splice($array,1、1); ↑ Offset which you want to delete$ ^& J4 E7 x z5 i7 r$ F5 i
输出:
/ P8 X- k2 V3 s( }; M6 g8 W; E [0] => a [1] => c]9 r- ]# s1 O6 [+ d6 O1 p$ D7 l
array_splice(),和 一样unset(),通过引用获数组。您不会将这些函数的返回值分配回数组。( R" y' z$ g2 F* a2 P! ?1 p* A$ T! P
删除多个数组元素想删除多个数组元素,不想调用unset()或\array_splice()多次调用使用函数\array_diff()或\array_diff_key()取决于您是否知道要删除的元素的值或键。
7 l% ?! M& P: \+ P3 [; R\array_diff()方法如果您知道要删除的数组元素的值,可以使用\array_diff(). 和以前一样,unset()它不会更改数组的键。
" V1 _; }0 w0 `: ]- @代码:
7 ]. G8 t1 k# Y$ @" h$array = [0 => "a",1 => "b",2 => "c",3 => "c"];$array = \array_diff($array,["a","c"]); └────────┘ Array values which you want to delete% I- L3 b/ T! m* }3 f
输出:% n4 ]* {+ Z* W- y: w
[1] => b]- V6 ], d5 l! H* @8 u
\array_diff_key()方法如果您知道要删除的元素的键,那么您要使用\array_diff_key(). 您必须确保将键作为第二个参数中的键,而不是作为值传输。键不会重新索引。1 _" Q2 t) L$ u2 e# Q/ y
代码:& F* {- v+ z2 u% o0 L
$array = [0 => "a",1 => "b",2 => "c"];$array = \array_diff_key($array,[0 => "xy","2" => "xy"]); ↑ ↑ Array keys which you want to delete
# X1 w/ w; I2 u# }7 n 输出:" Q$ x$ }; V. s) ~4 A: [* h* k
[1] => b]
' r7 D# \- ~9 k, ^! i 如果要使用unset()或\array_splice()删除具有相同值的多个元素,可使用\array_keys()获取具体值的所有键,然后删除所有元素。 |
|