Привет. Не уверен правильно ли задал заголовок для этого материала, но в любом случае информация о том, как один массив в PHP преобразовать в другой и сделать одни значения ключами, а другие — значением. Возможно это покажется вам какой-то абстракцией, но подобные действия в разработке приходится делать довольно часто. К примеру сделать запрос базе данных и сформировать из него массив по определенным условиям. Допустим так:
$sql = $pdo->query("SELECT id, username FROM `user` WHERE `status`=10"); |
$sql = $pdo->query("SELECT id, username FROM `user` WHERE `status`=10");
Таким образом мы получим список активных пользователей, вернее их ID и Login, в виде ассоциативного массива из которого мы сейчас соберем новый массив.
$RESPONSIBLE = array_column($sql, 'username', 'id'); |
$RESPONSIBLE = array_column($sql, 'username', 'id');
Функция array_column помогает преобразовать массив в тот, который нам нужен. То есть username мы делаем значением, а ID ключом. В итоге получим что-то вроде этого:
1
2
3
4
5
6
7
8
9
10
11
12
13
| Array
(
[1] => admin
[2] => hshdfhzx
[4] => tester
[5] => papina
[6] => hxfghxfghxfgh
[7] => kopteva
[10] => hhfhfhfgh
[16] => Alexserser
[17] => Alex345345
[18] => vira
) |
Array
(
[1] => admin
[2] => hshdfhzx
[4] => tester
[5] => papina
[6] => hxfghxfghxfgh
[7] => kopteva
[10] => hhfhfhfgh
[16] => Alexserser
[17] => Alex345345
[18] => vira
)
Вы можете спросить для чего это нужно, ведь в запросе я и так выбрал эти id и username, что по сути является тем же самым массивом, но не всегда есть возможность выбирать данные самостоятельно, зачастую они приходят извне с каких-то сторонних сервисов и других систем и тот массив данных не всегда пригоден для вашего проекта. А с помощью этой функции вы сможете пересобрать массив, отсортировать его и сделать более подходящим.
Потребность преобразование массивов в нечто другое, отличное от входящих данных появляется часто, а вот решение подобных задач приходит с опытом, хоть на первый взгляд это может показаться вполне очевидным и здесь не нужно придумывать велосипед, а всего лишь использовать встроенную в язык PHP функцию array_column. Надеюсь, что материал не оставит вас в затруднительном положении и вы его освоите на раз-два.
Спасибо за статью! Быстро и просто, и удобно. Такие мелочи очень полезны, помогло быстро справиться с задачей.