◐ Shell
clean mode source ↗

PHP: ArrayObject::offsetUnset - Manual

(PHP 5, PHP 7, PHP 8)

ArrayObject::offsetUnsetUnsets the value at the specified index

Description

public function ArrayObject::offsetUnset(mixed $key): void

Parameters

key

The index being unset.

Return Values

No value is returned.

Examples

Example #1 ArrayObject::offsetUnset() example

<?php
$arrayobj = new ArrayObject(array(0=>'zero',2=>'two'));
$arrayobj->offsetUnset(2);
var_dump($arrayobj);
?>

The above example will output:

object(ArrayObject)#1 (1) {
  ["storage":"ArrayObject":private]=>
  array(1) {
    [0]=>
    string(4) "zero"
  }
}

Found A Problem?

pvenakis at efront dot gr

18 years ago

When traversing recursively nested arrays using an RecursiveIteratorIterator, you cannot offsetUnset() or offsetSet() sub-array values, unless they are *all* declared as ArrayObject.

oalexandrino at yahoo dot com dot br

19 years ago

Be careful when you are working with collections. This method works with the reference of an array instead of its retrieved value.

So, you can do a mistake.

In order to understand have a look at code as follow:

<?php
class Employee
{
    public function __construct()
    {
    }    
}

class Company
{
    private $arrEmployee;
    
    public function __construct()
    {
    }    
    
    public function AddEmployee(Employee $oEmployee)
    {
        $this->arrEmployee[] = $oEmployee;    
    
    }
    
    public function getEmployeeList()
    {
        return $this->arrEmployee;
            
    }
    
} 
?>

<?php

// first, creates the Company object
$oCompany = new Company();

// second, add 10 elements in
foreach( range(0, 9) as $index )
{
    $oCompany->AddEmployee( new Employee() );
}

// get them
$arrEmployee = $oCompany->getEmployeeList();

// creates an ArrayObject from "$arrEmployee"
$arrayobject = new ArrayObject($arrEmployee);

// unsets its firt five elements
foreach( range(0, 4) as $index )
{
    $arrayobject->offsetUnset($index);
} 

// get them again
$arrEmployee = $oCompany->getEmployeeList();

// it shows just 5 elements, they were removed as reference via "offsetUnset" method
print_r($arrEmployee) ;

?>