Як перетворити масив на об’єкт у PHP?


367

Як я можу перетворити такий масив в об’єкт?

[128] => Array
    (
        [status] => Figure A.
 Facebook's horizontal scrollbars showing up on a 1024x768 screen resolution.
    )

[129] => Array
    (
        [status] => The other day at work, I had some spare time
    )

4
Який саме об’єкт ви хочете отримати саме? Що я маю на увазі: якими мають бути атрибути?
Паскаль МАРТИН

у циклі це повинно бути обом, оскільки статус - це один масив даних, тому обидва є принтетом
streetparade

не впевнений, коли, але це просто працює:$a = (object)['hello' => 'world'];
Ніщал Гаутам

Відповіді:


588

У найпростішому випадку, мабуть, достатньо "відкинути" масив як об'єкт:

$object = (object) $array;

Іншим варіантом буде інстанціювати стандартний клас як змінну та провести цикл через масив під час повторного призначення значень:

$object = new stdClass();
foreach ($array as $key => $value)
{
    $object->$key = $value;
}

Як зазначив Едсон Медіна , справді чистим рішенням є використання вбудованих json_функцій:

$object = json_decode(json_encode($array), FALSE);

Це також (рекурсивно) перетворює всі ваші підмасиви в об'єкти, які ви можете або не хочете. На жаль , це має 2-3x удар по продуктивності над обхватом підходом.

Увага! (дякую Ультра за коментар):

json_decode в різних середовищах перетворює дані UTF-8 різними способами. Я в кінцевому підсумку отримую значення "240,00" на місцях і "240" на виробництві - масове лихо. Переміщення, якщо конверсія не вдається, рядок повертається як NULL


41
"оскільки змінні не можуть починатися з чисел", так, вони можуть: $ object -> {3} = 'xyz';
chelmertz

11
"має показник продуктивності в 2-3 рази", що є несправедливим порівнянням, оскільки останній метод повертає рекурсивні об'єкти, тоді як циклічний підхід без додаткових умов (як у відповіді @streetparade) лише перетворює перший рівень.
таксаела

8
@feeela Я не думаю, що це взагалі несправедливо .. Я вже згадував, що це перетворення робить рекурсивно. Також хіт продуктивності в
2-3 рази

6
УВАГА! json_decode в різних середовищах перетворює дані UTF-8 різними способами. Я в кінцевому підсумку отримую значення "240,00" на місцях і "240" на виробництві - масове лихо. Перехід, якщо конверсія не вдасться, повертає рядок як NULL
Szymon Toda

1
Зверніть увагу при використанні функцій json_ *: посилання (наприклад, на інші масиви), що зберігаються в початковому масиві, будуть дублюватися в цьому випадку. Скажімо, ключ xу масиві містить посилання на інший масив. Тоді $object->xпісля виконання вашого одного вкладиша буде дублікат $array['x'], вже не посилання на початковий масив. Це може бути нешкідливим у деяких додатках, але для великих масивів він витрачає пам'ять і може зіпсувати виконання, якщо посилання буде використано згодом.
Копролал

153

ви можете просто використовувати кастинг типу для перетворення масиву в об’єкт.

// *convert array to object* Array([id]=> 321313[username]=>shahbaz)
$object = (object) $array_name;

//now it is converted to object and you can access it.
echo $object->username;

107

Простий спосіб був би

$object = (object)$array;

Але це не те, чого ти хочеш. Якщо ви хочете, щоб об'єкти хотіли чогось досягти, але цього питання не вистачає. Використовувати об’єкти лише з причини використання об’єктів не має сенсу.


2
не працює, я зробив це, перш ніж я поставив питання тут, тому повинен бути інший спосіб зробити
Streetparade

20
Чому він повинен дати свою причину, коли хоче використовувати предмети? Я не думаю, що це має відношення до того, як це робиться. Може, йому потрібно json_encode їх або серіалізувати? Причин для цього може бути десятки.
zombat

хм .. я подивився на вихід браузера, схоже на цей об’єкт (stdClass) # 150 (130) {[0] => масив (1) {["статус"] => рядок (130) "Нарешті останній Mac і Користувачі Linux не повинні відчувати себе громадянами другого класу на землі Chrome: у них є офіційна бета версія ... "} Офіційно це об'єкт, але як ітерацію кинути, щоб я міг отримати статус типу $ obj-> статус будь-якої ідеї ?
streetparade

zombat, кодування JSON не є причиною для використання об'єкта, є прапор json_encode () для використання об'єктів. при серіалізації потрібен буде певний тип об'єкта, який очікує приймач. І взагалі я намагаюся допомогти з актуальною проблемою. для мене це питання означає, що є архітектурна помилка десь ще.
johannes

приємно, працюйте з масивом laravel, щоб поставити об’єкт на випуск
Ентоні Кал

105

Швидкий злом:

// assuming $var is a multidimensional array
$obj = json_decode (json_encode ($var), FALSE);

Не дуже, але працює.


2
Я насправді люблю це рішення, використання вбудованих функцій замість визначених користувачем завжди швидше, і це чудово працює. Дякую за пораду.
aknatn

@Oddant Це вирішує проблему, згадану вище (перетворення масиву в об’єкт). Ваша зухвала повинна бути спрямована на головну посаду, а не на моє рішення.
Едсон Медіна

@EdsonMedina Я це зробив, але моя публікація занадто вниз.
вдегенне

1
@Oddant, щоб бути справедливим до @EdsonMedina, в оригінальному запитанні не вказано, яка видимість потрібні атрибути, і оскільки ОП не використовує $thisв коментарях, що випливають як аксесуар, це сильно має на увазі, що він / вона бажає stdClassекземпляр як вихід, а не визначений користувачем клас, такий як ваша відповідь. Я погоджуюся з елегантністю цього рішення, але, на жаль, це досить поширена модель вирішення цієї проблеми за допомогою вкладених масивів, де кастинг для об’єкта не працюватиме. Можливо також, що ОП використовує інтерфейс, який вимагає і об'єкт як вхід, а не масив.
DeaconDesperado

3
Не забувайте, що цим способом ви втратите всі, крім основних, типи. Наприклад, DateTime буде перетворювачем stdObject.
Денис Пшенов

97

Ось три способи:

  1. Підробка реального об'єкта:

    class convert
    {
        public $varible;
    
        public function __construct($array)
        {
            $this = $array;
        }
    
        public static function toObject($array)
        {
            $array = new convert($array);
            return $array;
        }
    }
  2. Перетворіть масив в об’єкт, перекинувши його на об'єкт:

    $array = array(
        // ...
    );
    $object = (object) $array;
  3. Перетворити масив в об'єкт вручну:

    $object = object;
    foreach ($arr as $key => $value) {
        $object->{$key} = $value;
    }

2
хм дякую, але ваш клас обличчя дає таку помилку Фатальна помилка: Неможливо перепризначити $ this у /var/www/bot/inc/twitter-bot.php на лінії 10
Streetparade

1
і typcasint @ посилання не є гарною ідеєю, навіть це не працює, ось що я отримав несподіваний T_OBJECT_CAST, очікуючи T_NEW або T_STRING або T_VARIABLE або '$'
streetparade

2
$ array = & (об'єкт) $ array == приємна реалізація KISS!
mate64

16
Чому хтось хоче використовувати інший метод, ніж 2)? Чи є якісь недоліки?
Йогу

7
введення масиву в об’єкт не працює на вкладених масивах
minhajul

34

Його простий шлях: Це створить об'єкт і для рекурсивних масивів:

$object = json_decode(json_encode((object) $yourArray), FALSE);

4
перехід falseдо json_decode()поверне асоціативний масив.
Іржа

3
@ user3284463 Передача trueдо json_decodeповертає асоціативний масив, falseє за замовчуванням і повертає StdClassекземпляр.
Елліот Рід

23

Залежно від того, де вам це потрібно і як отримати доступ до об’єкта, існують різні способи зробити це.

Наприклад: просто наберіть його

$object =  (object) $yourArray;

Однак найбільш сумісним є використання утилітного методу (ще не є частиною PHP), який реалізує стандартне кастинг PHP на основі рядка, який визначає тип (або ігноруючи його, просто де-посилаючи значення):

/**
 * dereference a value and optionally setting its type
 *
 * @param mixed $mixed
 * @param null  $type (optional)
 *
 * @return mixed $mixed set as $type
 */
function rettype($mixed, $type = NULL) {
    $type === NULL || settype($mixed, $type);
    return $mixed;
}

Приклад використання у вашому випадку ( Інтернет-демонстрація ):

$yourArray = Array('status' => 'Figure A. ...');

echo rettype($yourArray, 'object')->status; // prints "Figure A. ..."

17

Цей працював на мене

  function array_to_obj($array, &$obj)
  {
    foreach ($array as $key => $value)
    {
      if (is_array($value))
      {
      $obj->$key = new stdClass();
      array_to_obj($value, $obj->$key);
      }
      else
      {
        $obj->$key = $value;
      }
    }
  return $obj;
  }

function arrayToObject($array)
{
 $object= new stdClass();
 return array_to_obj($array,$object);
}

використання:

$myobject = arrayToObject($array);
print_r($myobject);

повертає:

    [127] => stdClass Object
        (
            [status] => Have you ever created a really great looking website design
        )

    [128] => stdClass Object
        (
            [status] => Figure A.
 Facebook's horizontal scrollbars showing up on a 1024x768 screen resolution.
        )

    [129] => stdClass Object
        (
            [status] => The other day at work, I had some spare time
        )

як зазвичай, ви можете циклічно це:

foreach($myobject as $obj)
{
  echo $obj->status;
}

Але це приблизно на 500% повільніше (тестується), ніж кастинг типу: $ obj = (object) $ array;
xZero

@xZero, але $obj = (object) $array;не працює для багатовимірних масивів.
Джефф Пукетт

15

Наскільки я не знаю, немає вбудованого способу зробити це, але це так просто, як і простий цикл:

    $obj= new stdClass();

    foreach ($array as $k=> $v) {
        $obj->{$k} = $v;
    }

Ви можете пояснити це, якщо вам це потрібно для рекурсивного побудови об'єкта.


14

Ви можете використовувати функцію (object) для перетворення масиву в об'єкт.

$arr= [128=> ['status'=>
                 'Figure A. Facebook \'s horizontal scrollbars showing up on a 1024x768 screen resolution.'],
                  129=>['status'=>'The other day at work, I had some spare time']];

            $ArrToObject=(object)$arr;
            var_dump($ArrToObject);

Результатом буде об’єкт, який містить масиви:

об’єкт (stdClass) # 1048 (2) {[128] => масив (1) {

["status"] => рядок (87) "Рисунок A. Горизонтальні полоси прокрутки Facebook, що відображаються у роздільній здатності екрана 1024x768." }

[129] => масив (1) {["статус"] => рядок (44) "Днями на роботі у мене був вільний час"}}


9

Насправді, якщо ви хочете використовувати це з багатовимірними масивами, ви хочете скористатися деякою рекурсією.

static public function array_to_object(array $array)
{
    foreach($array as $key => $value)
    {
        if(is_array($value))
        {
            $array[$key] = self::array_to_object($value);
        }
    }
    return (object)$array;
}

8

Я б точно пішов таким чистим шляхом:

<?php

class Person {

  private $name;
  private $age;
  private $sexe;

  function __construct ($payload)
  {
     if (is_array($payload))
          $this->from_array($payload);
  }


  public function from_array($array)
  {
     foreach(get_object_vars($this) as $attrName => $attrValue)
        $this->{$attrName} = $array[$attrName];
  }

  public function say_hi ()
  {
     print "hi my name is {$this->name}";
  }
}

print_r($_POST);
$mike = new Person($_POST);
$mike->say_hi();

?>

якщо ви подаєте:

формуляр

ви отримаєте це:

мікрофон

Я вважав, що це більш логічно, порівнюючи наведені вище відповіді від «Об’єктів», слід використовувати для тих цілей, для яких вони були зроблені (інкапсульовані милі маленькі об’єкти).

Також використання get_object_vars гарантує, що в маніпульованому Об’єкті не створюються зайві атрибути (ви не хочете, щоб автомобіль мав прізвище, а також людина, що вела 4 колеса).


Чому б не використовувати $ attr_value замість $ array [$ attr_name]; у вашій публічній функції from_array ($ array)
Sakkeer Hussain

7

Ви також можете використовувати ArrayObject, наприклад:

<?php
    $arr = array("test",
                 array("one"=>1,"two"=>2,"three"=>3), 
                 array("one"=>1,"two"=>2,"three"=>3)
           );
    $o = new ArrayObject($arr);
    echo $o->offsetGet(2)["two"],"\n";
    foreach ($o as $key=>$val){
        if (is_array($val)) {
            foreach($val as $k => $v) {
               echo $k . ' => ' . $v,"\n";
            }
        }
        else
        {
               echo $val,"\n";
        }
    }
?>

//Output:
  2
  test
  one => 1
  two => 2
  three => 3
  one => 1
  two => 2
  three => 3

1
На мою думку, це має стати найкращою відповіддю. Більше інформації herre: php.net/manual/en/arrayobject.construct.php
Джуліан

7

Я використовую (це член класу):

const MAX_LEVEL = 5; // change it as needed

public function arrayToObject($a, $level=0)
{

    if(!is_array($a)) {
        throw new InvalidArgumentException(sprintf('Type %s cannot be cast, array expected', gettype($a)));
    }

    if($level > self::MAX_LEVEL) {
        throw new OverflowException(sprintf('%s stack overflow: %d exceeds max recursion level', __METHOD__, $level));
    }

    $o = new stdClass();
    foreach($a as $key => $value) {
        if(is_array($value)) { // convert value recursively
            $value = $this->arrayToObject($value, $level+1);
        }
        $o->{$key} = $value;
    }
    return $o;
}

7

Трохи складна, але проста в техніці розширення:

Припустимо, у вас є масив

$a = [
     'name' => 'ankit',
     'age' => '33',
     'dob' => '1984-04-12'
];

Припустимо, у вас є клас Person, який може мати більш-менш атрибути з цього масиву. наприклад

class Person 
{
    private $name;
    private $dob;
    private $age;
    private $company;
    private $city;
}

Якщо ви все ще хочете змінити масив на об’єкт людини. Ви можете використовувати ArrayIterator Class.

$arrayIterator = new \ArrayIterator($a); // Pass your array in the argument.

Тепер у вас є об’єкт ітератора.

Створити клас, що розширює клас FilterIterator; де ви повинні визначити абстрактний метод accept. Слідкуйте за прикладом

class PersonIterator extends \FilterIterator
{
    public function accept()
    {
        return property_exists('Person', parent::current());
    }
}

Вищенаведене імпементація прив'яже властивість лише у тому випадку, якщо воно існує в класі.

Додайте ще один метод у клас PersonIterator

public function getObject(Person $object)
{
        foreach ($this as $key => $value)
        {
            $object->{'set' . underscoreToCamelCase($key)}($value);
        }
        return $object;
}

Переконайтеся, що у вашому класі визначені мутатори. Тепер ви готові викликати цю функцію там, де ви хочете створити об’єкт.

$arrayiterator = new \ArrayIterator($a);
$personIterator = new \PersonIterator($arrayiterator);

$personIterator->getObject(); // this will return your Person Object. 

6

рекурсія - ваш друг:

function __toObject(Array $arr) {
    $obj = new stdClass();
    foreach($arr as $key=>$val) {
        if (is_array($val)) {
            $val = __toObject($val);
        }
        $obj->$key = $val;
    }

    return $obj;
}

6

Для цього потрібен PHP7, оскільки я вирішив використовувати лямбда-функцію, щоб заблокувати 'innerfunc' в основній функції. Функція лямбда називається рекурсивно, звідси необхідність: "використовувати (& $ innerfunc)". Ви можете це зробити в PHP5, але не змогли приховати внутрішню функцію.

function convertArray2Object($defs) {
    $innerfunc = function ($a) use ( &$innerfunc ) {
       return (is_array($a)) ? (object) array_map($innerfunc, $a) : $a; 
    };
    return (object) array_map($innerfunc, $defs);
}

5

використовувати цю функцію, яку я зробив:

function buildObject($class,$data){
    $object = new $class;
    foreach($data as $key=>$value){
        if(property_exists($class,$key)){
            $object->{'set'.ucfirst($key)}($value);
        }
    }
    return $object;
}

Використання:

$myObject = buildObject('MyClassName',$myArray);

5

один лайнер

$object= json_decode(json_encode($result_array, JSON_FORCE_OBJECT));

1
Зауважте, що посилання (наприклад, на інші масиви), що зберігаються в початковому масиві, буде дублюватися цим однокласником. Скажімо, ключ xу масиві містить посилання на інший масив. Тоді $object->xпісля виконання вашого одного вкладиша буде дублікат $result_array['x'], а не ідентичний масив.
Копролал

4

Легко:

$object = json_decode(json_encode($array));

Приклад:

$array = array(
    'key' => array(
        'k' => 'value',
    ),
    'group' => array('a', 'b', 'c')
);

$object = json_decode(json_encode($array));

Тоді вірно:

$object->key->k === 'value';
$object->group === array('a', 'b', 'c')

1
Я думаю, що це рішення. Навіщо кодувати масив до json, а потім розшифровувати його? Це для мене не оптимальне рішення.
Джуліан

1
@Julian, оскільки це працює рекурсивно, робить це правильно визначеним і достатньо надійним («стандартним») способом, а також досить швидко, щоб стати гарною альтернативою випадковій магії мавпи, кодованої вручну.
Sz.

3

Ви також можете це зробити, додавши (об'єкт) зліва від змінної для створення нового об'єкта.

<?php
$a = Array
    ( 'status' => " text" );
var_dump($a);
$b = (object)$a;
var_dump($b);
var_dump($b->status);

http://codepad.org/9YmD1KsU


1
можливо варто згадати, що це називається "кастинг" або "кастинг типів": php.net/manual/en/…, а поведінка (об'єктного) масиву () задокументована тут: php.net/manual/en/…
Піт

2

Використання json_encodeпроблематично через спосіб обробки даних, що не належать до UTF-8. Варто зазначити, що метод json_encode/ json_encodeтакож залишає неасоціативні масиви як масиви. Це може бути або не бути тим, що ви хочете. Нещодавно мені довелося відтворити функціональність цього рішення, але без використання json_функцій. Ось що я придумав:

/**
 * Returns true if the array has only integer keys
 */
function isArrayAssociative(array $array) {
    return (bool)count(array_filter(array_keys($array), 'is_string'));
}

/**
 * Converts an array to an object, but leaves non-associative arrays as arrays. 
 * This is the same logic that `json_decode(json_encode($arr), false)` uses.
 */
function arrayToObject(array $array, $maxDepth = 10) {
    if($maxDepth == 0) {
        return $array;
    }

    if(isArrayAssociative($array)) {
        $newObject = new \stdClass;
        foreach ($array as $key => $value) {
            if(is_array($value)) {
                $newObject->{$key} = arrayToObject($value, $maxDepth - 1);
            } else {
                $newObject->{$key} = $value;
            }
        }
        return $newObject;
    } else {

        $newArray = array();
        foreach ($array as $value) {
            if(is_array($value)) {
                $newArray[] = arrayToObject($value, $maxDepth - 1);
            } else {
                $newArray[] = $value;
            }                
        }
        return $newArray;
    }
}

2

Найкращий метод у СВІТІ :)

function arrayToObject($conArray)
{
    if(is_array($conArray)){
        /*
        * Return array converted to object
        * Using __FUNCTION__ (Magic constant)
        * for recursive call
        */
        return (object) array_map(__FUNCTION__, $conArray);
    }else{
        // Return object
        return $conArray;
    }
}

якщо ви використовуєте різні методи, у вас виникнуть проблеми. Це найкращий метод. Ви ніколи не бачили.


2

Багатовимірні масиви в об’єкт. цей код використовується для перетворення методу спробу і лову API пошуку Bing.

try {
        // Perform the Web request and get the JSON response
        $context = stream_context_create($options);
        $results = file_get_contents($url . "?cc=" . $country . "&category=" . $type, false, $context);
        $results = json_decode($results);
        return response()->json($results);
    } catch (\Exception $e) {
        $results = array('value' => array(
                (object) array(
                    "name" => "Unable to Retrive News",
                    "url" => "http://www.sample.com/",
                    "image" => (object) array("thumbnail" => (object) array("contentUrl" => "")),
                    "publishedAt" => "",
                    "description" => "")
            )
        );
        $results = (object) $results;
        return response()->json($results);
    }

2

Ви можете використовувати Reflection:

<?php

$array = ['name'=>'maria','age'=>33];

class Person {

    public $name;
    public $age;

    public function __construct(string $name, string $age){
        $this->name  = $name;
        $this->age = $age;
    }
}

function arrayToObject(array $array, string $class_name){

    $r = new ReflectionClass($class_name);
    $object = $r->newInstanceWithoutConstructor();
    $list = $r->getProperties();
    foreach($list as $prop){
      $prop->setAccessible(true);
      if(isset($array[$prop->name]))
        $prop->setValue($object, $array[$prop->name]);
    } 

    return $object;

}

$pessoa1 = arrayToObject($array, 'Person');
var_dump($pessoa1);

1

CakePHP має рекурсивний клас Set :: map, який в основному відображає масив в об’єкт. Вам може знадобитися змінити зовнішній вигляд масиву, щоб об'єкт виглядав так, як вам потрібно.

http://api.cakephp.org/view_source/set/#line-158

Найгірший випадок, можливо, ви зможете отримати кілька ідей з цієї функції.


1

Очевидно лише екстраполяція відповідей деяких інших людей, але ось рекурсивна функція, яка перетворить будь-який мульчуючий масив в об’єкт:

   function convert_array_to_object($array){
      $obj= new stdClass();
      foreach ($array as $k=> $v) {
         if (is_array($v)){
            $v = convert_array_to_object($v);   
         }
         $obj->{strtolower($k)} = $v;
      }
      return $obj;
   }

І пам'ятайте , що якщо масив мав цифрові клавіші , вони все ще можуть бути посилання в отриманому об'єкті за допомогою {}(наприклад: $obj->prop->{4}->prop)


1

Надихнувшись усіма цими кодами, я спробував створити розширену версію з підтримкою: конкретного імені класу, уникати конструкторського методу, шаблону «бобів» та суворого режиму (встановити лише існуючі властивості):

    class Util {

static function arrayToObject($array, $class = 'stdClass', $strict = false) {
        if (!is_array($array)) {
            return $array;
        }

        //create an instance of an class without calling class's constructor
        $object = unserialize(
                sprintf(
                        'O:%d:"%s":0:{}', strlen($class), $class
                )
        );

        if (is_array($array) && count($array) > 0) {
            foreach ($array as $name => $value) {
                $name = strtolower(trim($name));
                if (!empty($name)) {

                    if(method_exists($object, 'set'.$name)){
                        $object->{'set'.$name}(Util::arrayToObject($value));
                    }else{
                        if(($strict)){

                            if(property_exists($class, $name)){

                                $object->$name = Util::arrayToObject($value); 

                            }

                        }else{
                            $object->$name = Util::arrayToObject($value); 
                        }

                    }

                }
            }
            return $object;
        } else {
            return FALSE;
        }
        }
}

1

Код

Ця функція працює так само, як і json_decode(json_encode($arr), false).

function arrayToObject(array $arr)
{
    $flat = array_keys($arr) === range(0, count($arr) - 1);
    $out = $flat ? [] : new \stdClass();

    foreach ($arr as $key => $value) {
        $temp = is_array($value) ? $this->arrayToObject($value) : $value;

        if ($flat) {
            $out[] = $temp;
        } else {
            $out->{$key} = $temp;
        }
    }

    return $out;
}

Тестування

Тест 1: Плоский масив

$arr = ["a", "b", "c"];
var_export(json_decode(json_encode($arr)));
var_export($this->arrayToObject($arr));

Вихід:

array(
    0 => 'a',
    1 => 'b',
    2 => 'c',
)
array(
    0 => 'a',
    1 => 'b',
    2 => 'c',
)

Тест 2: Масив об'єктів

$arr = [["a" => 1], ["a" => 1], ["a" => 1]];
var_export(json_decode(json_encode($arr)));
var_export($this->arrayToObject($arr));

Вихід:

array(
    0 => stdClass::__set_state(array('a' => 1,)),
    1 => stdClass::__set_state(array('a' => 1,)),
    2 => stdClass::__set_state(array('a' => 1,)),
)
array(
    0 => stdClass::__set_state(array('a' => 1,)),
    1 => stdClass::__set_state(array('a' => 1,)),
    2 => stdClass::__set_state(array('a' => 1,)),
)

Тест 3: Об'єкт

$arr = ["a" => 1];
var_export(json_decode($arr));
var_export($this->arrayToObject($arr));

Вихід:

stdClass::__set_state(array('a' => 1,))
stdClass::__set_state(array('a' => 1,))

0

я зробив це досить простим способом,

    $list_years         = array();
    $object             = new stdClass();

    $object->year_id   = 1 ;
    $object->year_name = 2001 ;
    $list_years[]       = $object;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.