Как перевернуть многомерный массив в PHP с помощью array_flip

У меня есть многомерный массив с парой значений ключа, поэтому я хочу перевернуть, т.е. ключ попадает в место значения, а значения попадают в место ключа, но я получаю сообщение об ошибке

Мой код Php:

echo '<pre>',print_r($res),'</pre>';

вывод, когда print_r($res):

Array
(
    [0] => Array
        (
            [userid] => 1
        )

    [1] => Array
        (
            [userid] => 2
        )

    [2] => Array
        (
            [userid] => 3
        )

)

получение ошибки на выходе, когда вы хотите перевернуть этот массив:

array_flip(): Can only flip STRING and INTEGER values!

Как это решить?

Какого результата вы пытаетесь достичь?

Nick 13.02.2019 07:10

@Nick Ник, я хочу перевернуть, означает, что значение массива должно занять свое ключевое место, а ключ измениться на позицию значения.

Anonymous 13.02.2019 07:13

Можете ли вы показать в своем вопросе, что вы ожидаете в качестве вывода, это может быть довольно просто, но, как уже указывалось, на данный момент это неясно.

Nigel Ren 13.02.2019 07:51

array_flip() не переворачивает массив как значения. array_flip() может переворачивать только строковые и целочисленные значения.

Md. Nashir Uddin 13.02.2019 07:53

Это проблема XY? Я не вижу никакой выгоды в переворачивании этих глубоких данных.

mickmackusa 29.08.2021 00:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
3 439
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете попробовать следующий способ

$arr = [
   [ 'userid' => 1, ],
   [ 'userid' => 2, ],
   [ 'userid' => 3, ]
];
array_walk($arr, function(&$val) { $val = array_flip($val); });

array_flip() не переворачивает массив как значения. array_flip() может переворачивать только строковые и целочисленные значения.

Вы можете попробовать это:

 $arr = [
   [ 'userid' => 1 ],
   [ 'userid' => 2 ],
   [ 'userid' => 3 ]
];
foreach($arr as $a){
    $flipped[] = array_flip($a);
}
print_r($flipped);
Ответ принят как подходящий

Вы пытаетесь перевернуть многомерный массив, где каждое значение является массивом, но согласно документам array_flip:

Note that the values of array need to be valid keys, i.e. they need to be either integer or string. A warning will be emitted if a value has the wrong type, and the key/value pair in question will not be included in the result.

Вы можете использовать массив_карта для использования array_flip для каждой записи:

$a = [
    ["userid" => 1],
    ["userid" => 2],
    ["userid" => 3],
];

$a = array_map("array_flip", $a);

print_r($a);

Результат

Array
(
    [0] => Array
        (
            [1] => userid
        )

    [1] => Array
        (
            [2] => userid
        )

    [2] => Array
        (
            [3] => userid
        )

)

См. демонстрация php

спасибо за ваше драгоценное время, которое решило мою проблему.

Anonymous 14.02.2019 20:01

Другие вопросы по теме