ArrayObject::getArrayCopy

(PHP 5 >= 5.0.0, PHP 7)

ArrayObject::getArrayCopyСоздаёт копию ArrayObject

Описание

public array ArrayObject::getArrayCopy ( void )

Экспортирует ArrayObject в массив.

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

У этой функции нет параметров.

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

Возвращает копию массива. Если ArrayObject ссылается на объект, то будет возвращен массив публичных (public) свойств данного объекта.

Примеры

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

<?php
// Массив с количеством фруктов
$fruits = array("lemons" => 1"oranges" => 4"bananas" => 5"apples" => 10);

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

// Создать копию массива
$copy $fruitsArrayObject->getArrayCopy();
print_r($copy);

?>

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

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

Коментарии

Автор:
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 )
{
   
// let’s give the objects the right and not the inherited name
   
$class get_class($this);

    foreach(
$array as $offset => $value)
       
$this->offsetSet($offsetis_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!
2011-12-05 07:06:11
http://php5.kiev.ua/manual/ru/arrayobject.getarraycopy.html
"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.
2014-05-24 10:42:31
http://php5.kiev.ua/manual/ru/arrayobject.getarraycopy.html
Is there a difference between casting to an array and using this function?

For instance, if we have:
$arrayObject = new ArrayObject([1, 2, 3]);

Is there a difference between these:
$array = (array) $arrayObject;
vs
$array = $arrayObject->getArrayCopy();

If not, is there any scenario where they would produce different results, or do they produce the result in different ways?
2016-12-07 22:53:21
http://php5.kiev.ua/manual/ru/arrayobject.getarraycopy.html
<?php
$data 
$likeArray->getArrayCopy();
?>
will NOT be magically called if you cast to array. Although I've expected it.
<?php
$nothing 
= (array)$likeArray;
?>
Here, $data != $nothing.
2016-12-14 17:37:06
http://php5.kiev.ua/manual/ru/arrayobject.getarraycopy.html
Автор:
When I used print_r ($fruitsArrayObject) instead of print_r ($copy), i.e. ignoring the getArrayCopy() step, I still got the same output. Why?
2017-01-03 20:34:40
http://php5.kiev.ua/manual/ru/arrayobject.getarraycopy.html

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