ArrayObject::exchangeArray

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

ArrayObject::exchangeArray用另一个数组交换数组

描述

public ArrayObject::exchangeArray(array|object $array): array

用另一个 arrayobject 交换当前 array

参数

array

要与当前数组交换的新 arrayobject

返回值

返回旧的 array

范例

范例 #1 ArrayObject::exchangeArray() 范例

<?php
// 可用水果数组
$fruits = array("lemons" => 1, "oranges" => 4, "bananas" => 5, "apples" => 10);
// 欧洲地点数组
$locations = array('Amsterdam', 'Paris', 'London');

$fruitsArrayObject = new ArrayObject($fruits);

// 现在用地点交换水果
$old = $fruitsArrayObject->exchangeArray($locations);
print_r($old);
print_r($fruitsArrayObject);

?>

上面的例子将输出

Array
(
    [lemons] => 1
    [oranges] => 4
    [bananas] => 5
    [apples] => 10
)
ArrayObject Object
(
    [0] => Amsterdam
    [1] => Paris
    [2] => London
)

添加注释

用户贡献注释 1 个注释

Corentin Larose
10 年前
值得注意的是,ArrayObject::exchangeArray() 在内部不会为参数中提供的数组/对象的每个偏移量/属性调用 ArrayObject::offsetSet()。

还值得注意的是,get/set 的行为,可以说有点“出乎意料”。

<?php
class MyArrayObject extends ArrayObject
{
public function
offsetSet($name, $value)
{
parent::offsetSet($name . '_control', $value);
parent::offsetSet($name, $value);
}
}

$test = new MyArrayObject();
$test->setFlags(\ArrayObject::ARRAY_AS_PROPS);
$test['my_value_1'] = 1;
$test['my_value_1'] = $test['my_value_1'] + 1;
$test['my_value_1'] += 1;
$test['my_value_1'] ++;
++
$test['my_value_1'];

$test->my_value_2 = 1;
$test->my_value_2 = $test->my_value_2 + 1;
$test->my_value_2 += 1;
$test->my_value_2 ++;
++
$test->my_value_2;

print_r($test);

// 输出:
MyArrayObject Object
(
[
storage:ArrayObject:private] => Array
(
[
my_value_1_control] => 3
[my_value_1] => 5
[my_value_2_control] => 2
[my_value_2] => 5
)
)
?>
To Top