Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/ilovecveti.ru/bitrix/modules/iblock/lib/helpers/arrays/ |
Upload File : |
<?php namespace Bitrix\Iblock\Helpers\Arrays; class ArrayFlatterator { private array $processedKeys = []; public function __construct(array $processedKeys = []) { $this->processedKeys = $processedKeys; } public function flatten(array $input): array { if (!empty($this->processedKeys)) { return $this->flattenWithCheckKeys($input); } foreach ($input as $key => $value) { if (is_array($value)) { $newItems = $this->getFlattenFields($value, $key); foreach ($newItems as $newKey => $newValue) { $input[$newKey] = $newValue; } } } return $input; } private function flattenWithCheckKeys(array $input): array { foreach ($input as $key => $value) { if (is_array($value) && in_array($key, $this->processedKeys, true)) { $newItems = $this->getFlattenFields($value, $key); foreach ($newItems as $newKey => $newValue) { $input[$newKey] = $newValue; } } } return $input; } private function getFlattenFields(array $fields, string $prefix): array { $result = []; foreach ($fields as $name => $value) { $key = "{$prefix}[{$name}]"; if (is_array($value)) { array_push($result, ...$this->getFlattenFields($value, $key)); } else { $result[$key] = $value; } } return $result; } }