我希望清除数组对象中的所有元素(可以是标准PHP数组,ArrayObject或基本上任何其他实现基本数组接口的对象,如Itertable,ArrayAccess,Countable等)。但是,我不想恢复该对象,因此我不得不取消设置所有单个元素,而不是创建相同类型的新对象。有一个简单的方法吗?
答案 0 :(得分:5)
foreach ($array as $key => $element) {
unset($array[$key]);
}
这需要Traversable
和ArrayAccess
,Countable
不是必需的。或者显然只是一个普通的数组。
答案 1 :(得分:3)
我不完全确定你为什么需要这样做,但是在回答你的问题时,你应该能够简单地使用array_splice函数从数组中删除所有对象; < / p>
$my_array = array('A', 'B', 'C');
array_splice($my_array, 0);
我从未使用array_splice从数组中删除所有对象,但我认为它的工作方式相同。
答案 2 :(得分:1)
我无法破译问题的真正要求。用空迭代器(EmptyIterator
或其他没有值的迭代器?)替换数组/迭代器可能就足够了。
$array = new EmptyIterator;
答案 3 :(得分:0)
尝试
$my_array = array('A', 'B', 'C');
unset($my_array);
答案 4 :(得分:0)
一个简单的未设置怎么办?
未设置($阵列);
答案 5 :(得分:0)
如果您从阵列中删除最后一条记录而不是下一个foreach循环可能会失败(internaly调用$ this-&gt; next())
所以它帮助我测试了有效性并在这种情况下打破了下一个循环。
deleteOffset = true;
foreach ($iterator as $key => $value)
{
if ($deleteOffset && $iterator->offsetExists($key) )
{
$iterator->offsetUnset($key);
}
//if remove last record than the foreach ( $this->next() ) fails so
//we have to break in this case the next ->next call
if (!$iterator->valid()) break;
}
答案 6 :(得分:-1)
PHP手册的最佳位置