📜  php 按值而不是键删除数组项 - PHP (1)

📅  最后修改于: 2023-12-03 15:18:29.719000             🧑  作者: Mango

PHP按值而不是键删除数组项

在PHP中,我们可以通过键来访问和删除数组中的元素。但是有时候,我们可能需要通过值来删除数组项。本文将介绍如何按值而不是键删除数组项。

使用array_search函数找到数组中的值的键

使用array_search函数可以在数组中查找指定的值,并返回其键(如果存在)。该函数的语法如下:

array_search($needle, $haystack)

其中,$needle表示要查找的值,$haystack表示要在其中查找的数组。如果 $needle$haystack 中存在,则返回其对应的键,否则返回FALSE。以下是一个示例:

$fruits = array('apple', 'banana', 'orange', 'kiwi');
$key = array_search('orange', $fruits);
echo $key; // 输出2

上面的代码中,我们通过array_search函数找到了$fruits数组中值为orange的元素的键,即2。

使用unset函数删除找到的数组项

找到数组中特定值的键后,我们可以使用unset函数删除该项。unset函数可以删除指定变量的值。以下是一个示例:

$fruits = array('apple', 'banana', 'orange', 'kiwi');
$key = array_search('orange', $fruits);
unset($fruits[$key]);
print_r($fruits); // 输出 Array ( [0] => apple [1] => banana [3] => kiwi )

上面的代码中,我们使用unset函数删除了$fruits数组中值为orange的元素。使用print_r函数打印数组,结果为Array ( [0] => apple [1] => banana [3] => kiwi ),可以看到$fruits数组中已经没有值为orange的元素了。

使用array_filter函数删除数组中的所有指定值

如果我们需要删除数组中的多个特定值,可以使用array_filter函数。该函数可以过滤一个数组中的所有符合条件的元素,然后返回过滤后的数组。下面是一个例子:

$fruits = array('apple', 'banana', 'orange', 'kiwi');
$fruits = array_filter($fruits, function($value) { return $value != 'orange'; });
print_r($fruits); // 输出 Array ( [0] => apple [1] => banana [3] => kiwi )

上面的代码中,我们使用array_filter函数过滤出了$fruits数组中所有值不为orange的元素。最后打印过滤后的数组,结果为Array ( [0] => apple [1] => banana [3] => kiwi )

总结

在PHP中,通过array_search函数可以找到数组中特定值的键,然后通过unset函数删除该元素,或者通过array_filter函数删除数组中所有该值的元素。这些方法可以帮助我们按值而不是键删除数组项。