Php 更改数组元素键值的简单方法

Php 更改数组元素键值的简单方法,php,arrays,key,Php,Arrays,Key,可能重复: 我在读一堆多维数组,在翻阅它们的时候,我注意到一些键是不正确的 对于每个不正确的键,我只想将其更改为零: 发件人: 致: 我想保留数组元素的值,我只想更改单个键是什么。欢迎提出建议 干杯暴力力量法: $array[0] = $array['bad_value']; unset($array['bad_value']); 如果将多个键更改为0,则会覆盖这些值 你可以这样做 $badKey = 'bad_value'; $array[0] = $array[$badKey]; uns

可能重复:

我在读一堆多维数组,在翻阅它们的时候,我注意到一些键是不正确的

对于每个不正确的键,我只想将其更改为零:

发件人:

致:

我想保留数组元素的值,我只想更改单个键是什么。欢迎提出建议

干杯

暴力力量法:

$array[0] = $array['bad_value'];
unset($array['bad_value']);

如果将多个键更改为0,则会覆盖这些值

你可以这样做

$badKey = 'bad_value';
$array[0] = $array[$badKey];
unset($array[$badKey]);

然后它将是$array['0']中的一个数组,其中包含断开的元素值。

正如您所说,可以将键更改为任何数字值,这如何

$bad_keys = array('bad_key_1', 'bad_key_2' ...);
$i = 0;
foreach($bad_keys as $bad_key) {
    $array[$i] = $array[$bad_key];
    unset($array[$bad_key]);
    $i++;
}

编辑:我给出的解决方案很糟糕,并没有真正解决问题,因为有多个坏键,这应该更好。

如前所述,不能有多个同名键,例如0。你想干什么?可以将这些键拆分为单独的数组吗?对不起,当我说0时,它必须是数字,所以可以是1或2,依此类推。这不是问题,有些键回来时带了一些奇怪的东西,我需要去掉。是的,但是由于这个数组是多维数组的一部分,我需要保持它在包含数组中的位置。你不能在更改键时保持位置,是吗?除非位置是数字,否则不能。不是。即使是数字,位置也可能不整齐。阅读有关PHP数组和内部指针的文档。你可以在数组中排序,但是键仍然存在。这太糟糕了。完全不需要在整个阵列上循环。PHP完全知道如何在不循环整个数组元素的情况下获取命名数组元素。
$badKey = 'bad_value';
$array[0] = $array[$badKey];
unset($array[$badKey]);
$array['0'][] = $array['bad_value'];
unset( $array['bad_value'] );
$bad_keys = array('bad_key_1', 'bad_key_2' ...);
$i = 0;
foreach($bad_keys as $bad_key) {
    $array[$i] = $array[$bad_key];
    unset($array[$bad_key]);
    $i++;
}