Задать вопрос
@FrieNze
web-разработчик

Как преобразовать массив в PHP?

Добрый вечер! подскажите, пожалуйста, как из массива вида:
[
  "quantity" => [
    0 => 1
    1 => 2
    2 => 3
    3 => 4
  ]
  "color" => [
    0 => 5
    1 => 6
    2 => 7
    3 => 8
  ]
]

получить массив такого вида:
[
    0 => [
        "quantity" => 1
        "color" => 5
    ]
    1 => [
        "quantity" => 2
         "color" => 6
    ]
    2 => [
        "quantity" => 3
        "color" => 7
    ]
    3 => [
        "quantity" => 4
        "color" => 8
    ]
]


Это не единственный вариант, к quantity и color могут ещё, допустим, добавиться product_id. Или может быть только quantity.
Всем заранее спасибо!
  • Вопрос задан
  • 240 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Stalker_RED
@Stalker_RED
$input = [
    "quantity" => [0=>1, 1=>2, 2=>3, 3=>4],
    "color" => [0=>5, 1=>6, 2=>7, 3=>8],
];

$result = [];
foreach( $input as $propertyName => $values ) {
    foreach ($values as $index => $value) {
        $result[$index][$propertyName] = $value;
    }
}
print_r($result);

sandbox.onlinephpfunctions.com/code/416005288eebf8...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BOOMER_74
@BOOMER_74
Full-Stack разработчик
Можно еще вот так:
<?php

$input = [
    'quantity' => [0=>1, 1=>2, 2=>3, 3=>4],
    'color' => [0=>5, 1=>6, 2=>7, 3=>8],
];

$output = array_map(function ($first, $second) {
    return [
        'quantity' => $first,
        'color' => $second,
    ];
}, $input['quantity'], $input['color']);

var_dump($output);


Главное проверить, что массивы одинаковой длины (это не будет ошибкой, вернется null) и содержат нужные ключи.

sandbox.onlinephpfunctions.com/code/b49d21ce96404e...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы