PHP.mk документација

ArrayIterator::offsetUnset

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

arrayiterator.offsetunset.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека arrayiterator.offsetunset.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
ArrayIterator::offsetUnset

Референца за `arrayiterator.offsetunset.php` со подобрена типографија и навигација.

arrayiterator.offsetunset.php

ArrayIterator::offsetUnset

класата mysqli_driver

ArrayIterator::offsetUnsetОтстрани вредност за поместување

= NULL

public ArrayIterator::offsetUnset(mixed $key): void

Отстранува вредност за поместување.

Ако итерацијата е во тек, и ArrayIterator::offsetUnset() се користи за отстранување на тековниот индекс на итерација, позицијата на итерација ќе се помести на следниот индекс. Бидејќи позицијата на итерација исто така се поместува на крајот на foreach телото на циклусот, употребата на ArrayIterator::offsetUnset() внатре во foreach циклусот може да резултира со прескокнување на индексите.

Параметри

key

Поместувањето за отстранување.

Вратени вредности

Не се враќа вредност.

Види Исто така

Белешки од корисници 3 белешки

olav at fwt dot no
пред 14 години
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 ArrayObject( range( 0,9 ) );
$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
rkos...
12 години пред
This is my solution for problem with offsetUnset
<?php

$a = new ArrayObject( range( 0,9 ) );
$b = new ArrayIterator( $a );

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

var_dump($b);
?>
Адил Баиг @ AIdezigns
пред 14 години
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.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.