从关联数组中删除键

Posted

技术标签:

【中文标题】从关联数组中删除键【英文标题】:Removing key from associative array 【发布时间】:2018-09-16 20:00:58 【问题描述】:

我想根据值删除某个值。在这种情况下的示例,我想从数组中删除Tom,然后下一个数据将继续使用Tom 之前使用的数字。

这是我的例子:

    $array = array(0 => "Emily", 1 => "Tom", 2 => "Peter");
    if ($k = array_search($csR, $array)!==false)
            unset($array[$k]);

结果应该是:

array(0 => "Emily", 1 => "Peter");

【问题讨论】:

使用 array_values 来“修复”键。 你放弃了吗??? 【参考方案1】:

由于您使用的是索引数组,因此最好的方法是使用array_values()

$csR = 'Tom';
$array = array(0 => "Emily", 1 => "Tom", 2 => "Peter");
if ($k = array_search($csR, $array)!==false)

    unset($array[$k]);
    $array = array_values($array);

print_r($array);

【讨论】:

【参考方案2】:

直接来自php: Arrays的文档

注意: unset() 函数允许从数组中删除键。请注意,该数组不会被重新索引。如果需要真正的“删除和移动”行为,可以使用 array_values() 函数重新索引数组。

<?php
$a = array(1 => 'one', 2 => 'two', 3 => 'three');
unset($a[2]);
/* will produce an array that would have been defined as
   $a = array(1 => 'one', 3 => 'three');
   and NOT
   $a = array(1 => 'one', 2 =>'three');
*/

$b = array_values($a);
// Now $b is array(0 => 'one', 1 =>'three')
?>

【讨论】:

我可以知道是否可以在删除第二个键后仍然希望总共拥有 3 个键? unset 将删除密钥,这意味着您将少一个密钥。您可以使用 $array[3] = 'four' 之类的方式添加值【参考方案3】:

你可以用Tom或者$csR得到数组和数组的区别然后重新索引:

$array = array_values(array_diff($array, [$csR]));

但是,很少需要有顺序键。你试过foreach而不是for吗?

【讨论】:

以上是关于从关联数组中删除键的主要内容,如果未能解决你的问题,请参考以下文章

php:如何从数字索引中获取关联数组键?

如何从 PHP 中的多维关联数组中删除项目

如何从 JavaScript 关联数组中删除对象?

ActionScript 3 从关联数组中删除元素

从关联数组中删除元素

PHP 数组中的每个ID键关联一个值,可不可以关联两个值?