PHP: одно из значений как ключ в массиве

У меня есть такой массив:

$arrayIn = [
     [ 0 => "3",
       1 => "12345"
     ],
     [ 0 => "2",
       1 => "123"
     ]
];

и хотите получить такой массив:

$arrayOut = [
     12345 => "3",
     123 => "2"   
];

Я пробовал с array_values и array_combine, но не смог получить такой результат. Как я могу это сделать?

Стоит ли изучать 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 и хотите разрабатывать...
2
0
35
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать array_column для этого

$arrayOut = array_column($arrayIn, 0, 1);

Второй аргумент указывает, какой столбец выбрать, а третий указывает, какой столбец использовать в качестве ключей.

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

Это так лаконично. +1

ishegg 05.04.2018 22:00

Спасибо, @ishegg. Должен любить array_column.

Don't Panic 05.04.2018 22:01

Это то, что мне было нужно. Большое спасибо!

kales 05.04.2018 22:07

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

$arrayOut = [];
foreach ($arrayIn as $arr) {
    $arrayOut[$arr[1]] = $arr[0];
}
var_dump($arrayOut);

Демо

Результат

array (size=2)
12345 => string '3' (length=1)
123 => string '2' (length=1)

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