PHP:动态复制数组的内容吗?

时间:2018-08-01 08:17:13

标签: php

我有两个数组和一个函数。

private $configuration;
private $parameters;

private function setParameters() {
    // 
}

setParameters函数中,我想向parameters数组分配元素。这两个变量都是数组,我需要将内容从configuration复制到parameters

配置数组的工作方式略有不同,configuration内是嵌套数组,数组configuration仅包含文件名,这些文件名是嵌套数组,类似于Laravel的配置。

因此,这是我的configuration结构的外观示例,很抱歉,如果您发现任何错误,我将在没有文本编辑器或IDE的情况下手写。

这些数组在嵌套方面可能要走得更远,为了便于阅读,我在这里只是保持简单。

[   
    "config_file_1" => [
        [
            "name" => "Example",
            "author" => "John"
        ]
    ],

    "config_file_2" => [
        [
            "country" => "Japan",
            "city" => "Tokyo"
        ]
    ],
]

这需要与下面的代码等效。

$this->parameters["config_file_1.name"] = "Example";
$this->parameters["config_file_1.author"] = "John";
$this->parameters["config_file_2.country"] = "Japan"; // ETC, ETC...

1 个答案:

答案 0 :(得分:1)

              $configuration = [
        'config_file_1'=> [
            "name" => "Example",
            "author" => ['John', 'Do', 'Ou']],
        'config_file_2' => [
            "country" => "Japan",
            "city" => ["1", '2', '3'],
            'val' => ['a'=>'x', 'b'=> 'y']]
    ];

        $parameters = [];

    foreach($configuration  as $con => $config){
        foreach($config as $key => $value){
            if(is_array($value)){
                foreach($value as $keys => $value){
                    $parameters["{$con}.{$key}.{$keys}"] = $value;
            }} else {
                $parameters["{$con}.{$key}"] = $value;
            }
        }
    }

        print_r($parameters);
//        Array
//        (
//            [config_file_1_name] => Example
//            [config_file_1_author] => John
//            [config_file_2_country] => Japan
//            [config_file_2_city] => Tokyo
//        )