使用Foreach创建关联数组,插入现有的关联数组

时间:2018-05-25 22:08:21

标签: php arrays amazon-web-services amazon-route53

你好。

我目前在使用AWS Route-53 API时遇到问题。要创建记录,您需要调用一个函数,该函数本身需要一组输入。

我想在这里创建一个记录集,为此我有一些POST值。其中之一$_POST['record_value']是一个textarea,有多行。我循环通过它们。这是为一条记录启用多个值。当您将其硬编码为ResourceRecords;

中的一个值时,代码如下所示
$result = $this->route53->changeResourceRecordSets([
            'ChangeBatch' => [
                'Changes' => [
                    [
                        'Action' => 'CREATE',
                        'ResourceRecordSet' => [
                            'Name' => $recordName,
                            'ResourceRecords' => [
                               [
                                   'Value' => $recordValue
                               ],
                            ],
                            'TTL' => $recordTtl,
                            'Type' => $recordType,
                        ],
                    ],
                ],
                'Comment' => 'Routing Record Set',
            ],
            'HostedZoneId' => $this->zone,
        ]);

豪尔。我想动态制作ResourceRecords。对于textarea中的每一行,我需要一组新的代码部分;

  [
     'Value' => $recordValue
  ],

我认为如下;

 $newData = [];
        foreach(explode("\r\n", $recordValue) as $valLine) {
            $newData[] = ["Value" => $valLine];
        }

        $result = $this->route53->changeResourceRecordSets([
            'ChangeBatch' => [
                'Changes' => [
                    [
                        'Action' => 'CREATE',
                        'ResourceRecordSet' => [
                            'Name' => $recordName,
                            'ResourceRecords' => [
                               $newData
                            ],
                            'TTL' => $recordTtl,
                            'Type' => $recordType,
                        ],
                    ],
                ],
                'Comment' => 'Routing Record Set',
            ],
            'HostedZoneId' => $this->zone,
        ]);

然而,这似乎返回了一个例外:Found 1 error while validating the input provided for the ChangeResourceRecordSets operation:↵[ChangeBatch][Changes][0][ResourceRecordSet][ResourceRecords][0] must be an associative array. Found array(1).

我是否构建了错误的数组,或者我是否完全错误地使用了这个数组?

1 个答案:

答案 0 :(得分:2)

$newData已经是一个数组,你不需要将它包装在另一个数组中。

'ResourceRecords' => $newData,