我应该如何从这样的一个数组中删除所有的第二个元素(使用无非是建于PHP阵列功能):从数组中删除每个第二个元素并重新排列键?
$array = array('first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh');
当我删除所有第二个元素,我应该得到:
$array = array('first', 'third', 'fifth', 'seventh');
可能吗?
我应该如何从这样的一个数组中删除所有的第二个元素(使用无非是建于PHP阵列功能):从数组中删除每个第二个元素并重新排列键?
$array = array('first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh');
当我删除所有第二个元素,我应该得到:
$array = array('first', 'third', 'fifth', 'seventh');
可能吗?
$array = array('first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh');
foreach (range(1, count($array), 2) as $key) {
unset($array[$key]);
}
$array = array_merge($array);
var_dump($array);
或
$array = array('first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh');
$size = count($array);
$result = array();
for ($i = 0; $i < $size; $i += 2) {
$result[] = $array[$i];
}
var_dump($result);
是的,当然。
for ($i = 0; $i < count($array); $i++)
{
if (($i % 2) == 0) unset ($array[$i]);
}
dobar dobar;)hvala ti! – metaforce
这不会重新排列键和(根据问题)这将删除0,2,4,...,但他们应该保持。 1,3,5,...应该被删除。次要的“事情”:你不应该在'for'-test-expression中使用函数,因为它会在任何迭代中被调用。另外它会导致不想要的行为,因为数组的大小会发生变化(在第一个'unset()'的大小不再是'$ maxKey + 1'之后)。 – KingCrunch
@KingCrunch我只是给了他一个例子。另外我同意在for-test-expression中使用函数。但再一次,这只是一个学校的例子,他应该如何思考以解决他的问题。 –
另一种方法使用array_intersect_key
:
$array = array('first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh');
$keys = range(0, count($array), 2);
$result = array_values(array_intersect_key($array, array_combine($keys, $keys)));
var_dump($result);
正确的方法是一个反向环(沿与通常的模量) 对于任何人寻找一个复制和粘贴溶液:
for ($i = count($ar)-1; $i >= 0 ; $i--){ if (($i % 2) == 0) unset ($ar[$i]); }
你是最棒的!我会在8-10分钟左右接受你的回答;) – metaforce