ArrayIterator::offsetUnset

(PHP 5 >= 5.0.0)

ArrayIterator::offsetUnsetСбрасывает значение по смещению

Описание

public void ArrayIterator::offsetUnset ( string $index )

Сбрасывает значение по смещению.

Внимание

К настоящему времени эта функция еще не была документирована; для ознакомления доступен только список аргументов.

Список параметров

index

Смещение для сброса.

Возвращаемые значения

Эта функция не возвращает значения после выполнения.

Смотрите также

Коментарии

Make sure you use this function to unset a value. You can't access this iterator's values as an array. Ex:

<?php
$iterator 
= new \RecursiveIteratorIterator(new \RecursiveArrayIterator($arr));

foreach(
$iterator as $key => $value)
{
    unset(
$iterator[$key]); 
}
?>

Will return :

PHP Fatal error:  Cannot use object of type RecursiveIteratorIterator as array

offsetUnset works properly even when removing items from nested arrays.
2011-06-24 02:23:30
http://php5.kiev.ua/manual/ru/arrayiterator.offsetunset.html
Автор:
When unsetting elements as you go it will not remove the second index of the Array being worked on. Im not sure exactly why but there is some speculations that when calling unsetOffset(); it resets the pointer aswell.

<?php

$a 
= new ArrayObjectrange0,) );
$b = new ArrayIterator$a );

for ( 
$b->rewind(); $b->valid(); $b->next() )
{
    echo 
"#{$b->key()} - {$b->current()} - \r\n";
   
$b->offsetUnset$b->key() );
}

?>

To avoid this bug you can call offsetUnset in the for loop

<?php
/*** ... ***/
for ( $b->rewind(); $b->valid(); $b->offsetUnset$b->key() ) )
{
/*** ... ***/
?>

Or unset it directly in the ArrayObject
<?php
/*** ... ***/
   
$a->offsetUnset$b->key() );
/*** ... ***/
?>

which will produce correct results
2011-07-07 07:12:30
http://php5.kiev.ua/manual/ru/arrayiterator.offsetunset.html
Автор:
This is my solution for problem with offsetUnset
<?php

$a 
= new ArrayObjectrange0,) );
$b = new ArrayIterator$a );

for ( 
$b->rewind(); $b->valid();  )
{
    echo 
"#{$b->key()} - {$b->current()} - <br>\r\n";
    if(
$b->key()==|| $b->key()==1){
       
$b->offsetUnset$b->key() );
    }else {
       
$b->next();
    }
}

var_dump($b);
?>
2014-02-14 11:11:59
http://php5.kiev.ua/manual/ru/arrayiterator.offsetunset.html

    Поддержать сайт на родительском проекте КГБ