PHP
downloads | documentation | faq | getting help | mailing lists | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ArrayObject::count> <ArrayObject::append
Last updated: Fri, 28 Nov 2008

view this page in

ArrayObject::__construct

(PHP 5)

ArrayObject::__constructConstruct a new array object

Description

ArrayObject::__construct ( mixed $input )

This constructs a new array object.

Parameters

input

The input parameter accepts an array or another ArrayObject.

Return Values

No value is returned.

Examples

Example #1 ArrayObject::__construct() example

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

$arrayobject = new ArrayObject($array);

var_dump($arrayobject);
?>

The above example will output:

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



ArrayObject::count> <ArrayObject::append
Last updated: Fri, 28 Nov 2008
 
add a note add a note User Contributed Notes
ArrayObject::__construct
kjarli at gmail dot com
03-Jul-2008 01:11
This extend allows multidimensional arrays to be converted aswell. It also returns 'Array' when echoed (unlike ArrayObject which gives an error).
<?php
/**
 * @author iltar van der berg
 * @version 1.0.1
 */
class RecursiveArrayObject extends ArrayObject
{
   
/**
     * overwrites the ArrayObject constructor for
     * iteration through the "array". When the item
     * is an array, it creates another self() instead
     * of an array
     *
     * @param Array $array data array
     */
   
public function __construct(Array $array)
    {   
        foreach(
$array as $key => $value) {
            if(
is_array($value)){
               
$value = new self($value);
            }
           
$this->offsetSet($key, $value);
        }
    }
   
   
/**
     * returns Array when printed (like "echo array();")
     * instead of an error
     *
     * @return string
     */
   
public function __ToString()
    {
        return
'Array';
    }
}
?>
german dot rumm at gmail dot com
14-Mar-2008 08:37
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
   
}
?>
agalkin at agalkin dot ru
21-Aug-2007 11:56
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
?>
Grigori Kochanov
15-Jul-2006 01:51
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

ArrayObject::count> <ArrayObject::append
Last updated: Fri, 28 Nov 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites