Извлечение и преобразование многомерного массива - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть массив из вызова API. Я хочу отформатировать его, прежде чем играть со значениями в моем представлении.

Это мой массив

$myArray = array(
            array(
                array(
                    "Name" => "firstname",
                    "Value" => "Mat"
                ),
                array(
                    "Name" => "name",
                    "Value" => "Doe"
                ),
                array(
                    "Name" => "city",
                    "Value" => "Dallas"
                ),
                array(
                    "Name" => "date_of_birth",
                    "Value" => "1975-05-22T22:00:00Z"
                ),

            )
        );

Мне нужно отформатировать это так

$myNewArray =
            array(
                "firstname" => "Mat",
                "name" => "Doe",
                "city" => "Dallas",
                "date_of_birth" => "1975-05-22T22:00:00Z"
            );

Я пытаюсь со многими foreach, но безуспешно. Я ищу массив функций на https://www.php.net/manual/en/ref.array.php, но я не знаю, какая из них для моего случая.

Будет приятно вести меня. Спасибо

Ответы [ 2 ]

4 голосов
/ 26 апреля 2019

Вы можете получить данные значения и затем объединить их с ключами

$myArray = array_shift($myArray);
$result = array_combine(array_column($myArray, 'Value'), array_column($myArray, 'Name'));
print_r($result);

Другой вариант с использованием array_column,

$myArray = array_shift($myArray);
$result = array_column($myArray, 'Value','Name');
print_r($result);

Вывод:

Array
(
    [firstname] => Mat
    [name] => Doe
    [city] => Dallas
    [date_of_birth] => 1975-05-22T22:00:00Z
)

Демо .

array_column - вернуть значения из одного столбца во входном массиве

0 голосов
/ 26 апреля 2019

Использование array_column

$res = array_column($myArray[0], 'Value','Name');
print_r($res);

OR

Использование array_walk

$res = [];
array_walk($myArray[0], function($v, $k) use(&$res){
    $res[$v['Name']] = $v['Value'];
});
echo '<pre>';

Результат

Array
(
 [firstname] => Mat
 [name] => Doe
 [city] => Dallas
 [date_of_birth] => 1975-05-22T22:00:00Z
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...