ArrayObject::__construct

(PHP 5 >= 5.0.0, PHP 7)

ArrayObject::__constructСоздает новый объект типа массив

Описание

public ArrayObject::__construct ([ mixed $input = [] [, int $flags = 0 [, string $iterator_class = "ArrayIterator" ]]] )

Создает новый объект типа массив (object).

Список параметров

input

Параметр input допускает значение типа array или Object.

flags

Флаги для контролирования поведения объекта ArrayObject. Смотрите ArrayObject::setFlags().

iterator_class

Указывает класс, который будет использоваться в качестве итератора объекта ArrayObject.

Возвращаемые значения

Возвращает ArrayObject при успешном выполнении.

Ошибки

Выбрасывает InvalidArgumentException в случае если:

  • input не является массивом или объектом
  • flags не является целым числом
  • iterator_class не является объектом, который имплементирует Iterator

Примеры

Пример #1 Пример использования ArrayObject::__construct()

<?php
$array 
= array('1' => 'one',
               
'2' => 'two',
               
'3' => 'three');

$arrayobject = new ArrayObject($array);

var_dump($arrayobject);
?>

Результат выполнения данного примера:

object(ArrayObject)#1 (3) {
  [1]=>
  string(3) "one"
  [2]=>
  string(3) "two"
  [3]=>
  string(5) "three"
}

Смотрите также

Коментарии

Автор:
As Marcus explained, the flag ArrayObject::SPL_ARRAY_AS_PROPS means the array element may be used as a property if there is no conflict with visible properties.

If there are visible properties in the class, the array element will not overwrite it's value.

<?php
class Rules extends ArrayObject {
    public 
$len 1;
    function 
__construct($array){
       
parent::__construct($array,ArrayObject::ARRAY_AS_PROPS);
       
$this['len'] = 2;
    }
}
$x = new Rules(array(1,2));
echo 
$x->len;
?>
Result: 1

<?php
class Rules extends ArrayObject {
    private 
$len 1;
    function 
__construct($array){
       
parent::__construct($array,ArrayObject::ARRAY_AS_PROPS);
       
$this['len'] = 2;
    }
}
$x = new Rules(array(1,2));
echo 
$x->len;
?>
Result: 2
2006-07-15 06:51:43
http://php5.kiev.ua/manual/ru/arrayobject.construct.html
Note that the first argument to ArrayObject::__construct, the initial array, is passed by reference. Nevertheless, modification of the array doesn't modify the object, so it may cause unexpected behaviour.

<?php
$array 
= array('foo' => 'initial');
$obj = new ArrayObject($array);

// array was passed by reference:
$obj['foo'] = 'modified';
var_dump($array); // foo => modified

// but it doesn't work backwards:
$array['foo'] = 'modified_again';
var_dump($obj); // foo => modified
var_dump($array); // foo => modified_again
?>
2007-08-21 04:56:43
http://php5.kiev.ua/manual/ru/arrayobject.construct.html
BTW, if you need to change array later, use exchangeArray() method. Good to know when you are writing a class that extends ArrayObject()

AFAIK, exchangeArray() doesn't return anything.

<?php
    $a 
= array('one''two''three');
   
$ao = new ArrayObject($a);

    foreach (
$ao as $element) {
        echo 
$element ' '// one two three
   


   
$b = array('four''five''six');
   
$ao->exchangeArray($b); // returns null

   
foreach ($ao as $element) {
        echo 
$element ' '// four five six
   
}
?>
2008-03-14 12:37:47
http://php5.kiev.ua/manual/ru/arrayobject.construct.html
The great confusion with this class is in its naming.  ArrayObject infers it will behave as an Array and as an Object.  It won't.  It behaves as an array.  It would better be called ArrayType.  You can, with some work, get it to work both as an object and as an array, but that is up to you.
2009-07-03 18:18:10
http://php5.kiev.ua/manual/ru/arrayobject.construct.html

    Поддержать сайт на родительском проекте КГБ