dpikoto468637 2013-08-24 19:47
浏览 39
已采纳

在多维数组中用值替换值

I need to replace all values in a multidimensional array by their respective key, but only if the value is not an array.

From:

array(
    'key1' => array(
        'key2' => array(
            'key3' => 'val'
        )
    )
);

To:

array(
    'key1' => array(
        'key2' => array(
            'key3'
        )
    )
);

Does anyone know a way to do this nicely?

  • 写回答

1条回答 默认 最新

  • dsa5211314 2013-08-24 19:57
    关注

    This seems to do more or less what you want (fiddle):

    <?php
    function convert($arr) {
        $ret = array();
        foreach ($arr as $key => $value) {
            if (is_array($value)) {
                $ret[$key] = convert($value);
            } else {
                $ret[] = $key;
            }
        }
        return $ret;
    }
    $test = array(
        'key1' => array(
            'key2' => array(
                'key3' => 'val'
            )
        )
    );
    var_dump(convert($test));
    

    Output:

    array(1) {
      ["key1"]=>
      array(1) {
        ["key2"]=>
        array(1) {
          [0]=>
          string(4) "key3"
        }
      }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数