ArrayObject::exchangeArray
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
ArrayObject::exchangeArray — 配列を別の配列と交換する
パラメータ
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 )
+add a note
User Contributed Notes 1 note
Corentin Larose ¶
10 years ago
It's worth notting that ArrayObject::exchangeArray() doesn't call ArrayObject::offsetSet() internally for each offset/property of the array/object provided in argument.
It's also worth noting the let's say "unexpected" behavior of 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);
// Prints out:
MyArrayObject Object
(
[storage:ArrayObject:private] => Array
(
[my_value_1_control] => 3
[my_value_1] => 5
[my_value_2_control] => 2
[my_value_2] => 5
)
)
?>
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google