Как создать массив с использованием данных из 4 других массивов и придать ему определенную структуру?

Как создать итоговый массив с использованием данных из массивов $input, $array1, $array2 и $params, чтобы получить структуру, где ключи из массива $input соответствуют подмассивам с ключами из $params и значениями из соответствующих элементов массивов $array1 и $array2?
  • 23 марта 2024 г. 12:49
Ответы на вопрос 3
Для создания массива с использованием данных из 4 других массивов и придания ему определенной структуры, можно воспользоваться следующим кодом на языке PHP:

```php
$input = ['key1', 'key2', 'key3']; // Исходный массив ключей
$array1 = ['value1', 'value2', 'value3']; // Массив значений для первого подмассива
$array2 = ['data1', 'data2', 'data3']; // Массив значений для второго подмассива
$params = ['param1', 'param2', 'param3']; // Массив параметров для структуры

$result = [];

foreach ($params as $param) {
    $keyIndex = array_search($param, $input); // Получаем индекс ключа из массива $input
    if ($keyIndex !== false) {
        $result[$param] = [
            'value' => $array1[$keyIndex],
            'data' => $array2[$keyIndex]
        ];
    }
}

print_r($result);
```

Данный код создаст итоговый массив $result с использованием данных из массивов $input, $array1, $array2 и $params с заданной структурой. Ключи из массива $input будут соответствовать подмассивам с ключами из $params и значениями из соответствующих элементов массивов $array1 и $array2. 

Например, если исходные массивы выглядят так:

$input = ['key1', 'key2', 'key3'];
$array1 = ['value1', 'value2', 'value3'];
$array2 = ['data1', 'data2', 'data3'];
$params = ['param1', 'param2', 'param3'];

То итоговый массив $result будет иметь вид:

```
Array
(
    [param1] => Array
        (
            [value] => value1
            [data] => data1
        )

    [param2] => Array
        (
            [value] => value2
            [data] => data2
        )

    [param3] => Array
        (
            [value] => value3
            [data] => data3
        )

)
```
function combine($ids, $keys, ...$values) {
  return array_combine(
    $ids,
    array_map(
      fn($i) => array_combine($keys, array_column($values, $i)),
      array_keys($ids)
    )
  );
}


$result = combine($input, $params, $array1, $array2);
$input = [
    '111',
    '222',
];

$arrays = [
    [
        'new',
        'confirmed'
    ],
    [
        '7777',
        'XXXX'
    ]
];

$params = [
    'state',
    'warehouse'
];

$result = [];

for ($i = 0; $i < count($input); $i++) {
    $key = $input[$i];
    $result[$key] = [];
    for ($j = 0; $j < count($params); $j++) {
        $result[$key][$params[$j]] = $arrays[$j][$i];
    }
}

print_r($result);
Похожие вопросы