清空PHP数组

时间:2011-02-01 12:33:57

标签: php arrays

我希望清除数组对象中的所有元素(可以是标准PHP数组,ArrayObject或基本上任何其他实现基本数组接口的对象,如Itertable,ArrayAccess,Countable等)。但是,我不想恢复该对象,因此我不得不取消设置所有单个元素,而不是创建相同类型的新对象。有一个简单的方法吗?

7 个答案:

答案 0 :(得分:5)

foreach ($array as $key => $element) {
    unset($array[$key]);
}

这需要TraversableArrayAccessCountable不是必需的。或者显然只是一个普通的数组。

答案 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)