<?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.
PHP.mk документација
ArrayObject::getArrayCopy
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
arrayobject.getarraycopy.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + превод во позадина
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
arrayobject.getarraycopy.php
ArrayObject::getArrayCopy
Референца за `arrayobject.getarraycopy.php` со подобрена типографија и навигација.
ArrayObject::getArrayCopy
класата mysqli_driver
ArrayObject::getArrayCopy — Creates a copy of the ArrayObject
Параметри
Оваа функција нема параметри.
Вратени вредности
Returns a copy of the array. When the ArrayObject refers to an object, an array of the properties of that object will be returned.
Примери
Пример #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();
var_dump($copy);
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
array(5) {
["lemons"]=>
int(1)
["oranges"]=>
int(4)
["bananas"]=>
int(5)
["apples"]=>
int(10)
["pears"]=>
int(4)
}
Белешки од корисници 5 белешки
spidgorny на gmail.com ¶
пред 9 години
Ivo von Putzer ¶
пред 14 години
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!
jlshor at buffalo dot edu ¶
пред 9 години
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?
php at webflips dot net ¶
пред 11 години
"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.