PHP:如何有选择地翻转数组键/值对?

Isi*_*ius 1 php arrays

将数组定义为......

    $my_array = array (
        'a' => array( 'BROWN' ),
        'b' => array( 'GREEN', 'MIN_LEN' => 2, 'MAX_LEN' => 60, 'SOMETHING' )
    );
Run Code Online (Sandbox Code Playgroud)

看起来像......

[a] => Array
    (
        [0] => BROWN
    )

[b] => Array
    (
        [0] => GREEN
        [MIN_LEN] => 2
        [MAX_LEN] => 60
        [1] => SOMETHING
    )
Run Code Online (Sandbox Code Playgroud)

我怎么能把它转换成......

[a] => Array
    (
        [BROWN] => BROWN
    )

[b] => Array
    (
        [GREEN] => GREEN
        [MIN_LEN] => 2
        [MAX_LEN] => 60
        [SOMETHING] => SOMETHING
    )
Run Code Online (Sandbox Code Playgroud)

请注意,键是字符串值而不是数字.或者,值为null是可以接受的.例如[BROWN] =>''.到目前为止,我能想到的只有array_flip,但我无法有选择地使用它.

Dav*_*dom 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]);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

看它工作