ds19891231 2012-01-16 18:28
浏览 22
已采纳

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

With an array defined as...

    $my_array = array (
        'a' => array( 'BROWN' ),
        'b' => array( 'GREEN', 'MIN_LEN' => 2, 'MAX_LEN' => 60, 'SOMETHING' )
    );

Which looks like...

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

[b] => Array
    (
        [0] => GREEN
        [MIN_LEN] => 2
        [MAX_LEN] => 60
        [1] => SOMETHING
    )

How may I convert it to...

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

[b] => Array
    (
        [GREEN] => GREEN
        [MIN_LEN] => 2
        [MAX_LEN] => 60
        [SOMETHING] => SOMETHING
    )

Notice the keys are the string value instead of numeric. OR it would be acceptable for the values to be null. eg [BROWN] => ''. So far all I can think of is array_flip, but I can't use that selectively.

  • 写回答

2条回答 默认 最新

  • duancongduo4109 2012-01-16 18:32
    关注
    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]);
        }
      }
    }
    

    See it working

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi