我應該如何從這樣的一個數組中刪除所有的第二個元素(使用無非是建於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