📌  相关文章
📜  如何在PHP中按值非键执行数组删除?

📅  最后修改于: 2022-05-13 01:56:28.245000             🧑  作者: Mango

如何在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"
}