将数组定义为...
$my_array = array (
'a' => array( 'BROWN' ),
'b' => array( 'GREEN', 'MIN_LEN' => 2, 'MAX_LEN' => 60, 'SOMETHING' )
);
看起来像......
[a] => Array
(
[0] => BROWN
)
[b] => Array
(
[0] => GREEN
[MIN_LEN] => 2
[MAX_LEN] => 60
[1] => SOMETHING
)
我如何将其转换为...
[a] => Array
(
[BROWN] => BROWN
)
[b] => Array
(
[GREEN] => GREEN
[MIN_LEN] => 2
[MAX_LEN] => 60
[SOMETHING] => SOMETHING
)
请注意,键是字符串值而不是数字。 OR 这些值为null是可以接受的。例如[BROWN] => ''。 到目前为止,我能想到的只有array_flip,但我无法有选择地使用它。
答案 0 :(得分:5)
foreach ($my_array as $oKey => $oVal) {
foreach ($oVal as $iKey => $iVal) {
if (!is_string($iKey) && is_string($iVal)) {
$my_array[$oKey][$iVal] = $iVal;
unset($my_array[$oKey][$iKey]);
}
}
}
答案 1 :(得分:0)
您将需要用户定义的功能。类似的东西:
function selective_flip(&$arr) {
foreach($arr as &$subarr) { //loops through a and b
foreach($subarr as $key => $value) {
if(is_string($value)) {
$subarr[$value] = $value;
unset($subarr[$key]);
}
}
}
}