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