PHP:使用动态键删除数组的值

时间:2018-08-30 12:28:18

标签: php arrays

一些不寻常的用例,但也许您可以提供帮助:

我将值的键作为单独的数组。像这样很容易获得数组的值:

function whatEver(){

    $array = array(
        0 => array( 'other' ),
        1 => array(
            0 => array( 'other' ),
            1 => array( 'value' )
        ),
    );

    $keys = array(
        0 => '1',
        1 => '1'
    );

    $result = $array;

    foreach($keys as $key)
    {
        $result = $result[$key];
    }

    return $result;
}

这将返回正确的数组/值:

Array
(
    [0] => value
)

但是,如果我想从原始数组中删除该值(如unset($ array [1] [1])),并返回不包含该值的原始$ array,该怎么办?

2 个答案:

答案 0 :(得分:2)

您是否尝试过使用unset($array[$key])?这样会将键以及与之关联的任何值从数组中删除。

这可能与以下内容重复:PHP: Delete an element from an array

答案 1 :(得分:2)

如果您需要此方法来处理任意数量的键,则需要在每次迭代时通过引用分配$result,并在最后一步取消设置:

$result = &$array;
$last = array_pop($keys);

foreach ($keys as $key) {
  $result = &$result[$key];
}

unset($result[$last]);

请注意,您需要对最终键稍有不同(存储在$last中的键)。如果仅将参考设置为最后一级,则未设置只会删除参考,而不是实际元素。

请参见https://3v4l.org/0a5Nv