一些不寻常的用例,但也许您可以提供帮助:
我将值的键作为单独的数组。像这样很容易获得数组的值:
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,该怎么办?
答案 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
中的键)。如果仅将参考设置为最后一级,则未设置只会删除参考,而不是实际元素。