Flip Многомерный массив

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

Array (
[0]=> array("a","b")
[1]=> array("c","d")
)

И я хочу преобразовать это в

Array (
[a]=> "0",
[b]=>"0",
[C]=>"1",
[d]=>"1")

Как я могу сделать это с лучшим способом?

0

Решение

Самый простой способ — использовать вложенный цикл.

foreach($array as $k => $arr) {
foreach($arr as $v) {
$result[$v] = $k;
}
}

Выход:

Array
(
[a] => 0
[b] => 0
[c] => 1
[d] => 1
)
1

Другие решения

Вы можете просто использовать array_fill_keys, array_merge

<?php
$test = [0=> array("a","b"),1=> array("c","d")];
$retest = array();
foreach($test as $key=>&$value){
$value = array_fill_keys($value, $key);
$retest = array_merge($retest,$value);
}
print_r($retest);
?>

Проверьте здесь: https://eval.in/604948

Выход:

    Array
(
[a] => 0
[b] => 0
[c] => 1
[d] => 1
)
0

Краткое решение с использованием array_values, array_fill_keys а также array_merge функции:

$arr = [
['a','b'],
['c','d'],
['e','f'],
];

$flipped = [];
foreach ($arr as $k => $v) {
$flipped = array_merge($flipped, array_fill_keys(array_values($v), $k));
}

print_r($flipped);

Выход:

Array
(
[a] => 0
[b] => 0
[c] => 1
[d] => 1
[e] => 2
[f] => 2
)
0
По вопросам рекламы [email protected]