如何在PHP中按值非键执行数组删除?
数组本质上是属于同一数据类型的键值对的存储元素。如果显式指定键,则从 0 开始的 id 由编译器自行分配给值。数组允许对存储的元素进行多种操作,例如访问、修改和删除。然后相应地调整元素位置。
方法 1: array_search()和unset()方法
array_search() 方法:
该值首先在数组中查找,然后依次删除。 array_search()方法用于在数组中搜索指定值。如果成功,则返回第一个对应的key。 array_search()方法在将指定值与数组的迭代值匹配方面区分大小写。如果相同的值多次出现,则仅从中提取一个。
句法:
array_search($value, $array);
论据:
- $value:数组中需要搜索的值。
- $array:在其中搜索值的数组。
返回值:如果值存在于数组中则返回键,否则返回false。
unset() 方法:
PHP中的unset()函数用于重置任何变量。如果在用户定义的函数上调用unset( ),它会取消设置局部变量。可以指定许多值作为此函数的参数。 unset() 方法中至少有一个变量是必需的。
句法:
unset($var);
返回值: unset()函数不返回任何值。
PHP代码:
PHP
'GeeksForGeeks',
1 => 'Python',
2 => 'Java',
3 => 'Physics'
);
#printing original array
echo ("Original Array: \n");
var_dump($arr);
#declaring the value to delete
$val = "Physics";
#finding the key on the basis of value
$key = array_search($val, $arr);
if (($key) !== false)
{
#deleting the key found
unset($arr[$key]);
}
echo ("
Modified Array: \n");
var_dump($arr);
?>
PHP
'GeeksForGeeks',
1 => 'Python',
2 => 'Java',
3 => 'Physics',
4 => 'Python'
);
#printing original array
echo ("Original Array: \n");
var_dump($arr);
#declaring the value to delete
$val = array(
"Python"
);
#finding the key on the basis of value
$arr = array_diff($arr, $val);
echo ("
Modified Array: \n");
var_dump($arr);
?>
PHP
'GeeksForGeeks',
'key2' => 'Python',
'key3' => 'Java',
'key4' => 'Physics',
'key5' => 'Python'
);
#printing original array
echo ("Original Array: \n");
var_dump($arr);
#declaring the value to delete
$val = array(
"Java"
);
#finding the key on the basis of value
$arr = array_diff($arr, $val);
echo ("
Modified Array: \n");
var_dump($arr);
?>
Original Array:
array(4) {
[0]=>
string(13) "GeeksForGeeks"
[1]=>
string(6) "Python"
[2]=>
string(4) "Java"
[3]=>
string(7) "Physics"
}
Modified Array:
array(3) {
[0]=>
string(13) "GeeksForGeeks"
[1]=>
string(6) "Python"
[2]=>
string(4) "Java"
}
方法二: array_diff()方法
PHP中的array_diff()函数用于比较两个(或多个)数组的值并返回差异。它返回一个数组,其中包含 array1 中未包含在 array2 或 array3 等中的条目。
句法:
array_diff(arr, array1, array2, ...)
论据:
- arr:与来自的其余数组进行比较的数组。
- array1, array2….:要与主数组进行比较的数组。
返回值:返回一个数组,其中包含来自arr的条目,这些条目不存在于任何其他相应的数组中。
我们依赖于使用PHP中的 array() 方法将值转换为数组的方法,然后对这两个数组应用array_diff()方法。与早期方法的不同之处在于,指定值的所有实例都从主数组中删除。
PHP代码:
PHP
'GeeksForGeeks',
1 => 'Python',
2 => 'Java',
3 => 'Physics',
4 => 'Python'
);
#printing original array
echo ("Original Array: \n");
var_dump($arr);
#declaring the value to delete
$val = array(
"Python"
);
#finding the key on the basis of value
$arr = array_diff($arr, $val);
echo ("
Modified Array: \n");
var_dump($arr);
?>
Original Array:
array(5) {
[0]=>
string(13) "GeeksForGeeks"
[1]=>
string(6) "Python"
[2]=>
string(4) "Java"
[3]=>
string(7) "Physics"
[4]=>
string(6) "Python"
}
Modified Array:
array(3) {
[0]=>
string(13) "GeeksForGeeks"
[2]=>
string(4) "Java"
[3]=>
string(7) "Physics"
}
PHP代码:以下代码说明了在键不是数字 ID 的情况下这种方法的用法。
PHP
'GeeksForGeeks',
'key2' => 'Python',
'key3' => 'Java',
'key4' => 'Physics',
'key5' => 'Python'
);
#printing original array
echo ("Original Array: \n");
var_dump($arr);
#declaring the value to delete
$val = array(
"Java"
);
#finding the key on the basis of value
$arr = array_diff($arr, $val);
echo ("
Modified Array: \n");
var_dump($arr);
?>
Original Array:
array(5) {
["key1"]=>
string(13) "GeeksForGeeks"
["key2"]=>
string(6) "Python"
["key3"]=>
string(4) "Java"
["key4"]=>
string(7) "Physics"
["key5"]=>
string(6) "Python"
}
Modified Array:
array(4) {
["key1"]=>
string(13) "GeeksForGeeks"
["key2"]=>
string(6) "Python"
["key4"]=>
string(7) "Physics"
["key5"]=>
string(6) "Python"
}