dongtangu6889 2018-05-06 19:56
浏览 32

试图破坏与$ key连接的多维数组。$ subkey1。$ subkey2 ... $ subkeyN = $ value

I have a small problem with my recursive function, and it is that FQDN is not being created correctly.

public function testBuildReverseSchemaNames() {
    $input = [
        'propertyZeroSchema' => 'value_0',
        'communicationPreferences' => [
            'grv3_newsletter_bi' => true
        ],
        'someContainer' => [
            'propertyOneSchema' => 'value_1'
        ],
        'propertyThreeSchema' => 'value_3'
    ];


    $expected = [
        'propertyZeroSchema' => 'value_0',
        'communicationPreferences.grv3_newsletter_bi' => true,
        'someContainer.propertyOneSchema' => 'value_1',
        'propertyThreeSchema' => 'value_3'
    ];

    $output = [];
    $this->buildReverseSchemaNames($input, $output);

    $this->assertEquals($expected, $output);
}


public function buildReverseSchemaNames($data, &$output, $currentFqdn = '') {
    foreach ($data as $key => $value) {
        if (is_array($value)) {
            $currentFqdn .= $key.'.';
            $this->buildReverseSchemaNames($value, $output, $currentFqdn);
        } else {
            $currentFqdn .= $key;
            $output[$currentFqdn] = $value;
        }
    }
}

But the output is like this:

Array (
    'propertyZeroSchema' => 'value_0'
    'propertyZeroSchemacommunicationPreferences.grv3_newsletter_bi' => true
    'propertyZeroSchemacommunicationPreferences.someContainer.propertyOneSchema' => 'value_1'
    'propertyZeroSchemacommunicationPreferences.someContainer.propertyThreeSchema' => 'value_3'
)
  • 写回答

2条回答 默认 最新

  • dtf54486 2018-05-06 20:07
    关注

    Well, I was able to find the answer by myself:

    Edit: After I thought about doing it cleaner, @jh1711 just answered this. If you repost it I will accept your answer.

    public function buildReverseSchemaNames($data, &$output, $currentFqdn = '') {
            foreach ($data as $key => $value) {
                if (is_array($value)) {
                    $this->buildReverseSchemaNames($value, $output, $currentFqdn . $key.'.');
                } else {
                    $output[$currentFqdn.$key] = $value;
                }
            }
        }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?