Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否根据元素的值从数组中删除元素?_Php - Fatal编程技术网

Php 是否根据元素的值从数组中删除元素?

Php 是否根据元素的值从数组中删除元素?,php,Php,我有一个带有键和值的规则数组 有没有一种简单的方法可以根据数组元素的值删除它,或者我必须对每个数组元素进行foreach循环并检查每个值才能删除它?您应该能够通过组合使用array\u search()和array\u splice()来完成此操作 未测试,但应适用于仅包含一次值的数组: $array = array("Apples", "strawberries", "pears"); $searchpos = array_search("strawberries", $array); if

我有一个带有键和值的规则数组


有没有一种简单的方法可以根据数组元素的值删除它,或者我必须对每个数组元素进行foreach循环并检查每个值才能删除它?

您应该能够通过组合使用
array\u search()
array\u splice()
来完成此操作

未测试,但应适用于仅包含一次值的数组:

$array = array("Apples", "strawberries", "pears");
$searchpos = array_search("strawberries", $array);
if ($searchpos !== FALSE) {
  array_splice($array, $searchpos, 1);
}

如果您的数组确实具有唯一值,则可以使用
array\u flip
array\u diff:

$array = array('a','b','c');
$array_to_remove = array('a');

$final_array = array_diff($array,$array_to_remove);
// array('b','c');
编辑:有关更多信息:

PHP 5.3从数组$a中删除“foo”的示例:

<?php
$a = array("foo", "bar");
$a = array_filter($a, function($v) { return $v != "foo"; });
?>


第二个参数可以是任何类型的PHP回调(例如,函数名为字符串)。如果搜索值不是常数,也可以使用函数生成函数。

简短回答
unset($array[array\u search('value',$array)]

解释

  • 按其值查找键:
    $key=array\u search('value',$array)
  • 按其键删除数组元素:
    unset($array[$key])

  • 如果数组中没有草莓,这段代码会做什么?如果草莓在输入数组中出现两次呢?大多数日子都不是我的日子!很好,对array_fliterAwesome不熟悉!谢谢