📅  最后修改于: 2023-12-03 15:18:29.719000             🧑  作者: Mango
在PHP中,我们可以通过键来访问和删除数组中的元素。但是有时候,我们可能需要通过值来删除数组项。本文将介绍如何按值而不是键删除数组项。
使用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
函数可以删除指定变量的值。以下是一个示例:
$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
函数。该函数可以过滤一个数组中的所有符合条件的元素,然后返回过滤后的数组。下面是一个例子:
$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
函数删除数组中所有该值的元素。这些方法可以帮助我们按值而不是键删除数组项。