【发布时间】:2011-02-17 06:25:42
【问题描述】:
我正在尝试做某事,但找不到任何解决方案,我在将其投入使用时也遇到了一些麻烦,所以这里有一个示例代码,也许足以证明我的目标为:
$input = array
(
'who' => 'me',
'what' => 'car',
'more' => 'car',
'when' => 'today',
);
现在,我想使用array_splice() 从数组中删除(并返回)一个元素:
$spliced = key(array_splice($input, 2, 1)); // I'm only interested in the key...
上面将从$input(第一个参数)中删除并返回1个元素(第三个参数),在偏移量2(第二个参数),所以$spliced将保持值more .
我将使用 foreach 循环遍历 $input,我知道要拼接的密钥,但问题是我不知道它的 数字偏移量,因为 array_splice 只接受整数我不知道该怎么办。
一个很无聊的例子:
$result = array();
foreach ($input as $key => $value)
{
if ($key == 'more')
{
// Remove the index "more" from $input and add it to $result.
$result[] = key(array_splice($input, 2 /* How do I know its 2? */, 1));
}
}
我首先使用array_search(),但它没有意义,因为它会返回关联索引....
如何确定关联索引的数字偏移量?
【问题讨论】:
-
如果您只想从阵列中删除
$input['more'],您可以使用unset($input['more']);来执行此操作。 -
@Gumbo:我想删除并返回删除的元素(键)。我知道我可以使用
unset(),但我很想知道是否可以使用array_splice()。 -
所有这些数组切片和骰子以及推送和移位功能通常在性能上非常昂贵。
标签: php arrays associative-array array-splice