CachingIterator::offsetSet

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

CachingIterator::offsetSetThe offsetSet purpose

说明

public CachingIterator::offsetSet ( mixed $index , mixed $newval ) : void
Warning

本函数还未编写文档,仅有参数列表。

参数

index

The index of the element to be set.

newval

The new value for the index.

返回值

没有返回值。

User Contributed Notes

ddrake at dreamingmind dot com 16-Dec-2019 03:23
offsetSet($index, $newval) will change an existing cache value or create a new cache entry

<?php
        $cache
= new \CachingIterator(
            new \
ArrayIterator(['a', 'b', 'c', 'd']),
            \
CachingIterator::FULL_CACHE);

       
$shortRange = range(0, 1);

        foreach (
$shortRange as $index) {
           
$cache->next();
        }

        echo
PHP_EOL . 'The cache' . PHP_EOL;
       
var_export($cache->getCache());
        echo
PHP_EOL;

        echo
$cache->offsetSet('0', 'manual change') . PHP_EOL;
        echo
$cache->offsetSet('3', 'manual entry') . PHP_EOL;
?>

The cache
array (
  0 => 'a',
  1 => 'b',
)

The cache
array (
  0 => 'manual change',
  1 => 'b',
  3 => 'manual entry',
)

There is no requirement that the offset exist in the inner iterator, or that the offset exists in the cache.

<?php
        $cache
= new \CachingIterator(
            new \
ArrayIterator([]),
            \
CachingIterator::FULL_CACHE);

        echo
$cache->offsetSet('22', 'manual entry') . PHP_EOL;

        echo
PHP_EOL . 'The cache' . PHP_EOL;
       
var_export($cache->getCache());
        echo
PHP_EOL;

       
print_r("cache offset '22' " .
            (
$cache->offsetExists('22') == 1
               
? 'exists'
               
: "doesn't exist"
           
) . PHP_EOL);
?>

The cache
array (
  22 => 'manual entry',
)
cache offset '22' exists