Создать ассоциативный массив с помощью Foreach, вставить в существующий ассоциативный массив - PullRequest
0 голосов
/ 26 мая 2018

Здравствуйте.

В настоящее время у меня проблема с API-интерфейсом AWS Route-53.Для создания записи вам нужно вызвать функцию, которая сама нуждается в массиве входных данных.

Я хочу создать здесь набор записей, и для этого у меня есть некоторые значения POST.Один из них, $_POST['record_value'], является текстовой областью и имеет несколько строк.Я зацикливаюсь на них.Это позволяет включить несколько значений для одной записи.Код выглядит следующим образом, когда вы жестко закодировали его как одно значение в 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,
        ]);

Hower.Я хочу сделать ResourceRecords динамически.Для каждой строки в текстовой области мне нужен новый набор следующей части кода:

  [
     '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 голосов
/ 26 мая 2018

$newData - это уже массив, вам не нужно переносить его в другой массив.

'ResourceRecords' => $newData,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...