php中删除数组元素有五种方法:一、unset()按键名删除;二、array_search()配合unset()按值删首个;三、array_filter()批量删值并重排索引;四、foreach引用遍历删多个条件元素;五、array_diff()一次性剔除多个预设值。

如果您需要从PHP数组中移除特定键或值对应的元素,unset()函数是最直接的内置方法之一。以下是几种常见且有效的操作方式:
一、使用unset()按键名删除数组元素
unset()函数通过指定数组的键名来移除对应元素,执行后该键及其值将被彻底销毁,且不会自动重排索引(尤其对关联数组和非连续数字索引数组有效)。
1、定义一个包含多个键值对的数组,例如:$arr = ['a' => 1, 'b' => 2, 'c' => 3];
2、调用unset()传入目标键名,例如:unset($arr['b']);
立即学习“PHP免费学习笔记(深入)”;
3、打印结果验证:执行print_r($arr);将显示Array ( [a] => 1 [c] => 3 )
二、使用array_search()配合unset()按值删除首个匹配元素
当仅知道要删除的值而不知其键名时,可先用array_search()定位该值首次出现的键,再传递给unset()执行删除。
1、声明数组,例如:$arr = [10, 20, 30, 20, 40];
2、查找值20的键位置:$key = array_search(20, $arr);
3、判断键是否存在并删除:if ($key !== false) { unset($arr[$key]); }
4、输出结果:print_r($arr);将返回Array ( [0] => 10 [2] => 30 [3] => 20 [4] => 40 )
三、使用array_filter()删除所有匹配值的元素(保留新索引)
array_filter()不修改原数组,而是返回一个过滤后的新数组;它适合批量删除所有等于某值的元素,并可自动重排数字索引(需配合array_values())。
1、初始化数组:$arr = [5, 15, 5, 25, 5];
2、调用array_filter()排除值为5的项:$filtered = array_filter($arr, function($v) { return $v !== 5; });
3、重置数字索引以获得连续下标:$result = array_values($filtered);
4、查看最终结果:print_r($result);输出为Array ( [0] => 15 [1] => 25 )
四、使用foreach遍历+引用方式删除多个指定值元素
若需在单次遍历中安全地删除多个满足条件的元素(如所有偶数),必须使用引用符号&避免因键变动导致跳过后续元素。
1、创建原始数组:$arr = [1, 2, 3, 4, 5, 6];
2、使用foreach配合引用遍历:foreach ($arr as $key => &$value) { if ($value % 2 == 0) unset($arr[$key]); }
3、取消引用以防止意外修改:unset($value);
4、输出清理后数组:print_r($arr);结果为Array ( [0] => 1 [2] => 3 [4] => 5 )
五、使用array_diff()删除已知值集合中的所有元素
array_diff()用于计算数组之间的差集,可一次性剔除多个预设值,适用于明确列出待删值的场景,返回结果自动重排索引。
1、设定主数组与待删除值数组:$arr = ['x', 'y', 'z', 'y', 'w']; $to_remove = ['y', 'w'];
2、执行差集运算:$result = array_diff($arr, $to_remove);
3、重置键名确保数字索引连续:$final = array_values($result);
4、验证输出:print_r($final);得到Array ( [0] => x [1] => z )











