php 在迭代时从数组中取消设置。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 在迭代时从数组中取消设置。相关的知识,希望对你有一定的参考价值。
<?php
// Method 1 - BAD
$toDelete1 = [0, 1]; // if it's for example [0, 2] so there is no problem
$list1 = new ArrayObject([0, 1, 2, 3, 4, 5, 6]);
foreach ($list1 as $key1 => $item1) {
if (in_array($item1, $toDelete1)) {
unset($list1[$key1]);
}
}
echo count($list1) . PHP_EOL; // 6, should be 5
// Method 2 - OK
$toDelete2 = [0, 1];
$list2 = new ArrayObject([0, 1, 2, 3, 4, 5, 6]);
$iterator2 = clone $list2;
foreach ($iterator2 as $key2 => $item2) {
if (in_array($item2, $toDelete2)) {
unset($list2[$key2]);
}
}
echo count($list2) . PHP_EOL; // 5, ok
// Method 3 - OK
$toDelete3 = [0, 1];
$list3 = new ArrayObject([0, 1, 2, 3, 4, 5, 6]);
$indexToDelete3 = [];
foreach ($list3 as $key3 => $item3) {
if (in_array($item3, $toDelete3)) {
$indexToDelete3[] = $key3;
}
}
$iterator3 = $list3->getIterator();
foreach ($indexToDelete3 as $key3 => $index3) {
$iterator3->offsetUnset($index3);
}
echo count($list3) . PHP_EOL; // 5, ok
以上是关于php 在迭代时从数组中取消设置。的主要内容,如果未能解决你的问题,请参考以下文章
迭代Java时从数组中删除对象
在迭代python时从剩余数组中找到2个元素的最小差异
如何在迭代字典时从字典中删除项目?
如何在迭代时从地图中删除?
如何在迭代时从 HashMap 中删除键? [复制]
迭代时从 HashSet 中删除元素 [重复]