广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >在 PHP 中从数组中删除一个元素
  • 173
分享到

在 PHP 中从数组中删除一个元素

phpjava开发语言phpstormar 2023-08-31 17:08:46 173人浏览 安东尼
摘要

问: 有没有一种简单的方法可以使用 PHP 从数组中删除一个元素,从而使 foreach ($array) 不再包含该元素? 我认为将它设置为 null 会做到这一点,但显然它不起作用。 答1:

问:

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

我认为将它设置为 null 会做到这一点,但显然它不起作用。

答1:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

删除数组元素有多种方法,其中有些方法对某些特定任务比其他方法更有用。

删除单个数组元素

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

如果您知道值并且不知道删除元素的键,您可以使用 \array_search() 来获取键。这仅在元素不多次出现时才有效,因为 \array_search 仅返回第一次命中。

未设置()

请注意,当您使用 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() 方法

如果您使用 \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() 相同,通过引用获取数组。您不会将这些函数的返回值分配回数组。

删除多个数组元素

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

\array_diff() 方法

如果您知道要删除的数组元素的值,则可以使用 \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() 方法

如果您知道要删除的元素的键,那么您想使用 \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() 获取特定值的所有键,然后删除所有元素。

\array_filter() 方法

如果要删除数组中具有特定值的所有元素,可以使用 \array_filter()。

代码:

$array = [0 => "a", 1 => "b", 2 => "c"];$array = \array_filter($array, static function ($element) {    return $element !== "b";    //                   ↑    // Array value which you want to delete});

输出:

[    [0] => a    [1] => c]

@AlexandruRada 不,你说“不要使用这个”——这只是胡说八道。当您将数组视为字典时,您可以安全地使用此方法。只有当您期望连续的数字索引时,您才需要使用其他东西。

@AlexandruRada 当您从 $x = array(1, 2, 3, 4); unset($x[2]) 结果 必须 为 var_dump($x); // array(3) { [0]=> int(1) [1]=> int(2) [3]=> int(4) } 时,您不可能拥有 array (3) { [0]=>int(0) ...(可能是错字)

unset 可以有多个参数:void unset ( mixed $var [, mixed $... ] )。

array_filter 也是一种可行的方法。如果您不想改变数组但它也不会重新索引,这可能是 JSON_encode 的问题,那么特别好。 php.net/manual/en/function.json-encode.php#94157

unset 不是函数,而是语言结构(和关键字)。它不能也不能以 `` 为前缀

答2:

huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式

应该注意的是,unset() 将保持索引不变,这是您在使用字符串索引(数组作为哈希表)时所期望的,但在处理整数索引数组时可能会非常令人惊讶:

$array = array(0, 1, 2, 3);unset($array[2]);var_dump($array);$array = array(0, 1, 2, 3);array_splice($array, 2, 1);var_dump($array);

因此,如果您想规范化整数键,可以使用 array_splice()。另一种选择是在 unset() 之后使用 array_values():

$array = array(0, 1, 2, 3);unset($array[2]);$array = array_values($array);var_dump($array);

值得注意的是,当您使用 array_splice() 时,您需要知道要删除的任何元素的偏移量,而不是键,而是偏移量(!)

@Tom:对于常规数组(连续整数索引),偏移量是索引。这就是 array_splice 有意义的地方(除其他外)。

当然可以,但是如果您在使用 splice 之前篡改数组,请记住一些事情

从一个从巨大数组中删除大量元素的基本测试来看,array_splice 似乎要快得多,而且内存占用更少。这与我的预期相符:array_values() 似乎正在制作数组的副本,而 array_splice 可以正常工作。

当您在循环中删除元素并希望索引保持一致但又想在循环后将它们压缩出来时,array_values 是一种有用的方法。

答3:

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

  // 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_values() 将很好地重新索引一个数字数组,但它会从数组中删除所有键字符串并用数字替换它们。如果您需要保留键名(字符串),或者如果所有键都是数字的,则重新索引数组,请使用 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)

$get_merged_values = array_merge($data['res'],$data['check_res']);当我打印这个 print_r($get_merged_values);它显示以下内容。数组 ( [0] => 数组 ( [menu_code] => 2 [menu_name] => 植物 [menu_order_no] => 1 ) [1] => 数组 ( [menu_code] => 3 [menu_name] => 行 [menu_order_no] => 2 ) ) 但我需要分别使用 $get_merged_values['menu_code'] 和 $get_merged_values['menu_name'] 获取 menu_code 和 menu_name 的值,而不是使用 $get_merged_values[0][menu_code], $get_merged_values[0 ][菜单名称]。请帮我怎么做?

问题的措辞与陈述的方式具有误导性。如果你想在 foreach 循环中删除 $arr[$i] 如果多个元素具有相同的值,这将不起作用。

答4:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

$key = array_search($needle, $array);if ($key !== false) {    unset($array[$key]);}

最好澄清一下,当您知道值而不是键时,此答案是用于删除元素。请注意,它只删除该值的第一个实例;要查找值的 所有 键,请使用 array_keys

如果多个元素具有相同的值,这将不起作用。

答5:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

unset($array[$index]);

答6:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

此外,对于命名元素:

unset($array["elementName"]);

$a = array("A"=>1, "B"=>2, "C"=>"a"); print_r($a); unset($a["B"]); print_r($a); 给出(格式化):Array ( [A] => 1 [B] => 2 [C] => a ), Array ( [A] => 1 [C] => a )

您似乎无法取消设置由字符串索引的数组元素(生成“致命错误:无法取消设置字符串偏移量”)。我认为情况并非总是如此,但肯定是从 PHP 5.3.10 开始,可能更早

@carpii PHP 可以从关联数组中取消设置元素。当您尝试在字符串而不是数组上使用 unset($var['key']) 时会导致致命错误 例如: $array = array( 'test' => 'value', 'another' => '价值', );未设置($array['test']); // 按预期从数组中删除“test”元素 $array = 'test';未设置($array['test']); // 按预期抛出“致命错误:无法取消设置字符串偏移量”

这里你必须知道键名,最好是:stackoverflow.com/a/52826684/1407491

@Eran 早在 2008 年就推荐过 unset()!如果您想改进该建议,则应该编辑该答案。这个多标签页上有太多多余的内容了!

答7:

huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式

如果您有一个数字索引数组,其中所有值都是唯一的(或者它们是非唯一的,但您希望删除特定值的所有实例),您可以简单地使用 array_diff() 删除匹配的元素,如下所示:

$my_array = array_diff($my_array, array('Value_to_remove'));

例如:

$my_array = array('Andy', 'Bertha', 'Charles', 'Diana');echo sizeof($my_array) . "\n";$my_array = array_diff($my_array, array('Charles'));echo sizeof($my_array);

这将显示以下内容:

43

在此示例中,删除了值为“Charles”的元素,这可以通过 sizeof() 调用来验证,该调用报告初始数组的大小为 4,删除后为 3。

如果两个元素具有相同的值,这将不起作用。

答8:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

销毁数组的单个元素

unset()

$array1 = array('A', 'B', 'C', 'D', 'E');unset($array1[2]); // Delete known index(2) value from arrayvar_dump($array1);

输出将是:

array(4) {  [0]=>  string(1) "A"  [1]=>  string(1) "B"  [3]=>  string(1) "D"  [4]=>  string(1) "E"}

如果需要重新索引数组:

$array1 = array_values($array1);var_dump($array1);

然后输出将是:

array(4) {  [0]=>  string(1) "A"  [1]=>  string(1) "B"  [2]=>  string(1) "D"  [3]=>  string(1) "E"}

从数组末尾弹出元素 - 返回已删除元素的值

mixed array_pop(array &$array)

$stack = array("orange", "banana", "apple", "raspberry");$last_fruit = array_pop($stack);print_r($stack);print_r('Last Fruit:'.$last_fruit); // Last element of the array

输出将是

Array(    [0] => orange    [1] => banana    [2] => apple)Last Fruit: raspberry

从数组中移除第一个元素(红色), - 返回移除元素的值

mixed array_shift ( array &$array )

$color = array("a" => "red", "b" => "green" , "c" => "blue");$first_color = array_shift($color);print_r ($color);print_r ('First Color: '.$first_color);

输出将是:

Array(    [b] => green    [c] => blue)First Color: red

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

array_shift 如果它是整数,则重新索引关键项目,所以它很糟糕,所以你可以使用这个:stackoverflow.com/a/52826684/1407491

array_shift() 的复杂度为 O(n)(由于重新索引数字索引),而 array_pop() 的复杂度为 O(1)。如何知道第一个元素的索引?只需在第一次迭代中启动 foreach 和 break 即可。

答9:

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

输出:

[    [0] => fruit2    [1] => fruit3    [2] => fruit4]fruit1

请注意,array_shift 只能删除数组中的第一个元素。同样使用 array_pop 删除数组中的最后一个元素。

Answer 仅适用于数组的第一个元素,不回答一般问题。

@sebweisgerber 你是对的,但我不认为这是错误的 ans 并且需要对此 ans 投反对票。问题是删除一个不提及任何位置的元素。

这仅涵盖一种边缘情况

这种技术没有高度的实用性——如前所述。这个答案缺少它的教育解释。

答10:

huntsbot.com – 高效赚钱,自由工作

如果指定了索引:

$arr = ['a', 'b', 'c'];$index = 0;    unset($arr[$index]);  // $arr = ['b', 'c']

如果我们有值而不是索引:

$arr = ['a', 'b', 'c'];// search the value to find index// Notice! this will only find the first occurrence of value$index = array_search('a', $arr);if($index !== false){   unset($arr[$index]);  // $arr = ['b', 'c']}

if 条件是必要的,因为如果找不到 index,unset() 将自动删除数组的第一个元素,这不是我们想要的。

unset() 早在几年前就已在此页面上多次推荐。 array_search() 和 unset() 早在 2011 年就得到了演示。stackoverflow.com/a/8135667/2943403这个答案没有给这个页面增加新的价值。

@mickMackusa 也许你是对的,这个答案中的所有信息都可以在其他不同的答案中找到。但也许针对不同的条件将所有这些都放在一个答案中并简单地解释一下,可以为某人节省一些时间。所以我猜它可以被认为是价值!

这是一种看待它的方式。查看这个多标签页的另一种方式是“带有冗余建议的严重过度膨胀”。研究人员一遍又一遍地浏览相同的建议,以确保他们正在考虑所有相关的建议。因为答案是单一和多种技术的混合体,而且许多答案都在说同样的事情——研究人员的经验受到了很大的破坏。想象一下,如果您需要此页面的建议。你想读一本充满多余建议的小说吗?我不会。

如果您个人发现以前的答案“不清楚”或需要更多详细信息,您可以编辑这些答案以更好地帮助研究人员,而不是发布新答案。这意味着更好的建议分布在更少的总答案中。

在很多情况下,我同意你的看法。但我认为编辑答案的目的是修复一些单词或小的技术错字,而不是扩展/更改它。无论如何,我自己花了一些时间浏览所有答案并找出一种简单有效的方法,并提出了这个解决方案,我觉得分享它可能是一个好主意。我认为它得到一些支持的原因是其他人有同样的情况,并且发现这个答案简单易懂且涵盖了! @mickmackusa

答11:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

如果您必须删除数组中的多个值并且该数组中的条目是对象或结构化数据,那么 array_filter() 是您的最佳选择。从回调函数返回 true 的那些条目将被保留。

$array = [    ['x'=>1,'y'=>2,'z'=>3],     ['x'=>2,'y'=>4,'z'=>6],     ['x'=>3,'y'=>6,'z'=>9]];$results = array_filter($array, function($value) {    return $value['x'] > 2; }); //=> [['x'=>3,'y'=>6,z=>'9']]

原文链接:https://www.huntsbot.com/qa/YlXZ/deleting-an-element-from-an-array-in-php?lang=zh_CN&from=csdn

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

来源地址:https://blog.csdn.net/kalman2019/article/details/128439899

--结束END--

本文标题: 在 PHP 中从数组中删除一个元素

本文链接: https://www.lsjlt.com/news/386566.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在 PHP 中从数组中删除一个元素
    问: 有没有一种简单的方法可以使用 PHP 从数组中删除一个元素,从而使 foreach ($array) 不再包含该元素? 我认为将它设置为 null 会做到这一点,但显然它不起作用。 答1: ...
    99+
    2023-08-31
    php java 开发语言 phpstorm ar
  • 在 React 中如何从状态数组中删除一个元素
    目录在 React 中从状态数组中删除一个元素:永远不要在 React 中改变状态数组根据多个条件从状态数组中删除元素使用逻辑与 (&&) 运算符使用逻辑或 (||)...
    99+
    2023-03-24
    React 状态数组删除一个元素 React 数组删除元素
  • php 从数组中删除指定元素
    在 PHP 中,我们可以使用 array_splice() 函数从数组中删除指定的元素。除此之外,还有一些其他的方法,比如使用 unset() 函数或 array_filter() 函数来删除指定元素。下面我们将详细介绍这些方法的用法和注意...
    99+
    2023-05-24
  • React中怎么从状态数组中删除一个元素
    本文小编为大家详细介绍“React中怎么从状态数组中删除一个元素”,内容详细,步骤清晰,细节处理妥当,希望这篇“React中怎么从状态数组中删除一个元素”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在 React...
    99+
    2023-07-05
  • php如何从数组中间移除一个元素
    今天小编给大家分享一下php如何从数组中间移除一个元素的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。移除方法:1、用“$in...
    99+
    2023-06-30
  • java数组中如何删除一个元素
    在Java中,数组的长度是固定的,无法直接删除元素。但可以通过创建一个新的数组来间接删除元素。具体步骤如下:1. 创建一个新的数组,...
    99+
    2023-10-18
    java
  • php数组如何删除第一个元素
    这篇文章主要为大家展示了“php数组如何删除第一个元素”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php数组如何删除第一个元素”这篇文章吧。php删除数组中第一个元素的方法:1、使用array...
    99+
    2023-06-15
  • php删除一个数组元素的案例
    这篇文章将为大家详细讲解有关php删除一个数组元素的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php删除一个数组元素的方法:可以通过使用array_splice函数来删除数组中的一个元素,如【$a...
    99+
    2023-06-06
  • 在PHP中怎么删除数组元素
    这篇文章主要讲解了“在PHP中怎么删除数组元素”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在PHP中怎么删除数组元素”吧!一、使用unset函数删除数组元素最常见的删除数组元素的方法是使用...
    99+
    2023-07-05
  • Vuejs如何从数组中删除元素
    这篇文章主要介绍“Vuejs如何从数组中删除元素”,在日常操作中,相信很多人在Vuejs如何从数组中删除元素问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vuejs如何从数组中删除元素”的疑惑有所帮助!接下来...
    99+
    2023-07-05
  • php怎么删除数组中的n个元素
    你可以使用`array_splice()`函数来删除数组中的n个元素。`array_splice()`函数有三个参数:数组本身、开始...
    99+
    2023-08-17
    php
  • PHP如何删除数组中的某个元素
    这篇文章主要介绍PHP如何删除数组中的某个元素,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语...
    99+
    2023-06-15
  • php如何删除数组中第5个元素
    这篇“php如何删除数组中第5个元素”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何删除数组中第5个元素”文章吧。2...
    99+
    2023-06-30
  • es6如何删除一个数组元素
    这篇文章主要讲解了“es6如何删除一个数组元素”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“es6如何删除一个数组元素”吧! 方...
    99+
    2022-10-19
  • php如何排除一个数组中在另一个数组内的元素
    这篇“php如何排除一个数组中在另一个数组内的元素”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何排除一个数组中在另...
    99+
    2023-07-05
  • php排除一个数组元素
    在PHP中,数组是非常常用的一种数据类型。在使用数组时,有时候需要对数组中的某些元素进行排除。本文将介绍如何在PHP中排除一个数组元素。首先,我们需要了解PHP的几个基础函数,其中包括:unset():用于删除数组中的一个或多个元素。arr...
    99+
    2023-05-24
  • PHP怎么删除数组中元素
    这篇文章主要讲解了“PHP怎么删除数组中元素”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP怎么删除数组中元素”吧!删除数据中的一个元素如果你想删除数组中的一个元素,你可以使用 unse...
    99+
    2023-06-27
  • 二个数组相同元素删除php
    PHP是一门流行的服务器端开发语言,支持各种数据处理和管理技术。其中,数组是PHP编程的重要部分,可以表示各种复杂数据结构和元素集合。假设我们有两个数组A和B,它们包含若干元素,我们想实现一个功能:删除A和B中相同的元素,即仅保留在A或B中...
    99+
    2023-05-19
  • php如何删除数组多个元素
    这篇文章主要介绍了php如何删除数组多个元素,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php删除数组多个元素的方法:1、使用array_diff()函数删除数组多个元素;...
    99+
    2023-06-20
  • php函数 删除数组中的元素
    在PHP中,删除数组中的元素有多种方法。下面将介绍几种最常用的方法。unset函数unset函数是PHP提供的一种删除变量的方法。可以通过unset函数删除数组中的一个或多个元素。下面是使用unset函数删除数组元素的示例代码:$arr =...
    99+
    2023-05-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作