Php 使用键和值转换多维数组

Php 使用键和值转换多维数组,php,arrays,codeigniter,multidimensional-array,Php,Arrays,Codeigniter,Multidimensional Array,我有如下PHP数组: Array ( [11] => Array ( [0] => foo [1] => bar [2] => hello ) [14] => Array ( [0] => world [1] => love ) [22] => Array ( [0] => stack [

我有如下PHP数组:

Array
(
[11] => Array
    (
        [0] => foo
        [1] => bar
        [2] => hello
    )

[14] => Array
    (
        [0] => world
        [1] => love
    )

[22] => Array
    (
        [0] => stack
        [1] => overflow
        [2] => yep
        [3] => man
    )
 )
我希望结果如下:

array (
 'foo' => '11',
 'bar' => '11',
 'hello' => '11',
 'world' => '14',
 'love' => '14',
 'stack' => '22',
 'overflow' => '22',
 'yep' => '22',
 'man' => '22'
 )

foreach
内部尝试了
foreach
,但仍然无法实现。只有两个级别。

您没有显示您的
foreach
尝试,但它相当简单:

foreach($array as $key => $val) {
    foreach($val as $v) {
        $result[$v] = $key;
    }
}
如果不能保证内部的
foreach
是数组,则可以将它们包装在
if(in_array())
中。此外,所有子数组值都必须是唯一的,否则您只能获得最后一个的键/值

还有一种方法:

$result = array();

foreach($array as $key => $val) {
    $result = array_merge($result,
                array_combine($val, array_fill(0, count($val), $key)));
}

使用内部数组的值作为键并用父数组键填充值来创建结果数组。与前面的结果合并。

您没有显示您的
foreach
尝试,但它相当简单:

foreach($array as $key => $val) {
    foreach($val as $v) {
        $result[$v] = $key;
    }
}
如果不能保证内部的
foreach
是数组,则可以将它们包装在
if(in_array())
中。此外,所有子数组值都必须是唯一的,否则您只能获得最后一个的键/值

还有一种方法:

$result = array();

foreach($array as $key => $val) {
    $result = array_merge($result,
                array_combine($val, array_fill(0, count($val), $key)));
}

使用内部数组的值作为键并用父数组键填充值来创建结果数组。与前面的结果合并。

您可以使用如下所示的FOREACH循环轻松地完成此操作。顺便说一下,你也可以测试一下


您可以使用如下所示的FOREACH循环轻松地完成这项工作。顺便说一下,你也可以测试一下


关于概念,您必须确保初始数组的值不同以避免最后的键重写。您放弃了还是什么???关于概念,您必须确保初始数组的值不同以避免最后的键重写。您放弃了还是什么???