ArrayObject::offsetUnset()
(PHP 5, PHP 7)
Unsets the value at the specified index
说明
public ArrayObject::offsetUnset(mixed $index): void
Unsets the value at the specified index.
参数
- $index
The index being unset.
返回值
没有返回值。
范例
ArrayObject::offsetUnset() example
<?php $arrayobj = new ArrayObject(array(0=>'zero',2=>'two')); $arrayobj->offsetUnset(2); var_dump($arrayobj); ?>
以上例程会输出:
object(ArrayObject)#1 (1) { [0]=> string(4) "zero" }
When traversing recursively nested arrays using an RecursiveIteratorIterator, you cannot offsetUnset() or offsetSet() sub-array values, unless they are *all* declared as ArrayObject.
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) ; ?>