Php 使用键和值转换多维数组
我有如下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 [
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循环轻松地完成这项工作。顺便说一下,你也可以测试一下
关于概念,您必须确保初始数组的值不同以避免最后的键重写。您放弃了还是什么???关于概念,您必须确保初始数组的值不同以避免最后的键重写。您放弃了还是什么???