PHP 8.3.21 Released!

ArrayObject::exchangeArray

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

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

Описание

public 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
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
)
)
?>
To Top

Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!

Check out: eBank.nz (Art Generator) | Netwrck.com (AI Tools) | Text-Generator.io (AI API) | BitBank.nz (Crypto AI) | ReadingTime (Kids Reading) | RewordGame | BigMultiplayerChess | WebFiddle | How.nz | Helix AI Assistant