• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ArrayObject::offsetUnset()

    (PHP 5, PHP 7)

    Unsets the value at the specified index

    说明

    publicArrayObject::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) ;
    ?>