ArrayObject::getArrayCopy

(PHP 5 >= 5.0.0)

ArrayObject::getArrayCopyCreates a copy of the ArrayObject.

Descrição

public array ArrayObject::getArrayCopy ( void )

Exports the ArrayObject to an array.

Parâmetros

Esta função não possui parâmetros.

Valor Retornado

Returns a copy of the array. When the ArrayObject refers to an object an array of the public properties of that object will be returned.

Exemplos

Exemplo #1 ArrayObject::getArrayCopy() example

<?php
// Array of available fruits
$fruits = array("lemons" => 1"oranges" => 4"bananas" => 5"apples" => 10);

$fruitsArrayObject = new ArrayObject($fruits);
$fruitsArrayObject['pears'] = 4;

// create a copy of the array
$copy $fruitsArrayObject->getArrayCopy();
print_r($copy);

?>

O exemplo acima irá imprimir:

Array
(
    [lemons] => 1
    [oranges] => 4
    [bananas] => 5
    [apples] => 10
    [pears] => 4
)

add a note add a note

User Contributed Notes 2 notes

up
0
php at webflips dot net
10 months ago
"When the ArrayObject refers to an object an array of the public properties of that object will be returned."

This description does not seem to be right:

<?php
class A
{
    public
$var = 'var';
    protected
$foo = 'foo';
    private
$bar = 'bar';
}

$o = new ArrayObject(new A());
var_dump($o->getArrayCopy());

/*
Dumps:

array(3) {
  ["var"]=>
  string(3) "var"
  ["*foo"]=>
  string(3) "foo"
  ["Abar"]=>
  string(3) "bar"
}
*/
?>

So it does not only include the public properties.
up
0
Ivo von Putzer
3 years ago
If you did something like this to make your constructor multidimensional capable you will have some trouble using getArrayCopy to get a plain array straight out of the method:
<?php
public function __construct( $array = array(), $flags = 2 )
{
   
// let’s give the objects the right and not the inherited name
   
$class = get_class($this);

    foreach(
$array as $offset => $value)
       
$this->offsetSet($offset, is_array($value) ? new $class($value) : $value);

   
$this->setFlags($flags);
}
?>

That’s the way I solved it:

<?php
public function getArray($recursion = false)
{
   
// just in case the object might be multidimensional
   
if ( $this === true)
        return
$this->getArrayCopy();

    return
array_map( function($item){
        return
is_object($item) ? $item->getArray(true) : $item;
    },
$this->getArrayCopy() );
}
?>

Hope this was useful!
To Top