PHP 8.6.0 Beta 1 is available for testing

ArrayObject::exchangeArray

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

ArrayObject::exchangeArrayЗаменяет массив на другой

Описание

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

Метод заменяет текущий массив (array ) на другой массив (array ) или объект (object ).

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

array

Новый массив (array ) или объект (object ) для замены текущего массива.

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

Метод возвращает старый массив (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);
var_dump($old);
var_dump($fruitsArrayObject);
?>

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

array(4) {
 ["lemons"]=>
 int(1)
 ["oranges"]=>
 int(4)
 ["bananas"]=>
 int(5)
 ["apples"]=>
 int(10)
}
object(ArrayObject)#1 (1) {
 ["storage":"ArrayObject":private]=>
 array(3) {
 [0]=>
 string(9) "Amsterdam"
 [1]=>
 string(5) "Paris"
 [2]=>
 string(6) "London"
 }
}

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 1 note

up
4
Corentin Larose
12 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
 )
)
?>
+Добавить

AltStyle によって変換されたページ (->オリジナル) /