从关联数组中删除键

时间:2018-04-06 18:10:12

标签: php arrays key unset

我想根据值删除某个值。在这种情况下的示例,我想从数组中删除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");

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

直接来自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')
?>

答案 2 :(得分:0)

您可以使用Tom$csR获取数组与数组之间的差异,然后重新编制索引:

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

但是,很少需要顺序键。您是否尝试过foreach而不是for