有没有一种简单的方法可以使用PHP从数组中删除元素,以便foreach ($array)不再包括该元素?

我以为将其设置为null就可以了,但显然不起作用.

推荐答案

删除数组元素有不同的方法,其中一些方法对某些特定任务更有用.

删除单个数组元素

如果只想删除一个数组元素,可以使用unset()\array_splice().

如果您知道值,但不知道删除元素的键,那么可以使用\array_search()来获取键.由于\array_search只返回第一次命中,因此只有当元素不出现多次时,这才有效.

unset()

请注意,使用unset()时,数组键不会改变.如果要重新索引键,可以使用unset()之后的\array_values(),这将把所有键转换为从0开始的数字枚举键.

代码:

$array = [0 => "a", 1 => "b", 2 => "c"];
unset($array[1]);
          // ↑ Key which you want to delete

输出:

[
    [0] => a
    [2] => c
]

\array_splice() method

如果使用\array_splice(),关键点将自动重新建立索引,但关联关键点不会更改,而使用\array_values()则会将所有关键点转换为数字关键点.

\array_splice()需要offset,而不是key作为第二个参数.

代码:

$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()相同,通过引用获取array.您不会将这些函数的返回值分配回array.

删除多个数组元素

如果要删除多个数组元素,并且不想多次调用unset()\array_splice(),则可以使用函数\array_diff()\array_diff_key(),具体取决于您是否知道要删除的元素的值或键.

\array_diff() method

如果知道要删除的数组元素的值,那么可以使用\array_diff().与之前的unset()一样,它不会更改数组的键.

代码:

$array = [0 => "a", 1 => "b", 2 => "c", 3 => "c"];
$array = \array_diff($array, ["a", "c"]);
                          // └────────┘
                          // Array values which you want to delete

输出:

[
    [1] => b
]

\array_diff_key() method

如果知道要删除的元素的键,则需要使用\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
]

如果要使用unset()\array_splice()删除具有相同值的多个元素,可以使用\array_keys()获取特定值的所有键,然后删除所有元素.

Php相关问答推荐

从WooCommerce Checkout Country Select2下拉列表中重新排序国家/地区

Yahoo Finance API文件_GET_CONTENTS 429请求太多

LaravelEloquent 地根据表中的值提取记录

闭包绑定$This和垃圾收集器

从两个日期创建日期范围,然后为范围中的每个日期复制子数组

使用DOMPDF获取PDF格式的本 map 像

Laravel处理belongToMany和额外字段

Symfony框架锁定和.env设置

允许在WooCommerce管理订单列表中使用计费邮箱进行搜索

如何批量处理消息总线中的消息

使用简码在 WooCommerce 我的帐户中显示一些用户数据

在 WooCommerce 中应用优惠券时显示购物车商品折扣金额

需要以一种形式执行两个操作

当我激活插件时出现错误注意:未定义的偏移量:1

从插件更改主题功能,function_exists 不起作用

如何使用不同的方法编写嵌套连接查询并将两列连接成一列在 laravel 查询生成器中

用于检测此模式的正则表达式:something;something=something,something=something... 未知次数

PHP 合并/合并多维数组

输出每个可能的产品选项

按数字然后按字符串对关联 PHP 数组进行排序