У меня есть такой массив.
Array (
[0]=> array("a","b")
[1]=> array("c","d")
)
И я хочу преобразовать это в
Array (
[a]=> "0",
[b]=>"0",
[C]=>"1",
[d]=>"1")
Как я могу сделать это с лучшим способом?
Самый простой способ — использовать вложенный цикл.
foreach($array as $k => $arr) {
foreach($arr as $v) {
$result[$v] = $k;
}
}
Выход:
Array
(
[a] => 0
[b] => 0
[c] => 1
[d] => 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
)
Краткое решение с использованием 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
)