Многомерный массив с использованием объектов

#php #arrays #object

#php #массивы #объект

Вопрос:

Можно ли остановить цикл от перезаписи предыдущего значения?

 <?php
foreach (array('email1', 'email2') as $line) {
  $x = [
    $line => [
      "Reports" => [
        (object) [
          "ReportType" => "1",
          "SummaryFrequency" => [
            (object) [
              "FrequencyType" => "8011",
              "SecondsPast" => "32400",
            ],
          ],
          "Filter" => (object) [
            "ClauseType" => "or",
            "RuleField" => "",
            "RuleOperator" => "",
            "RuleValue" => "",
            "ClauseChildren" => [
              (object) [
                "ClauseType" => "",
                "RuleField" => "BackupJobDetail.TimeSinceStarted",
                "RuleOperator" => "int_lte",
                "RuleValue" => "86400",
              ],
            ],
          ],
        ],
      ],
    ],
  ];
}

print_r($x);


 

https://phpize.online/?phpses=e658de0de3dc1ed5a4d8d27ecebf567aamp;sqlses=nullamp;php_version=php8amp;sql_version=mysql57

Ответ №1:

На данный момент вы перезаписываете $x каждый раз, если вы хотите сделать его массивом с $line каждым индексом, создайте пустой массив, а затем добавьте новые элементы с новым индексом…

 $x = [];
foreach (array('email1', 'email2') as $line) {
  $x[$line] = [
      "Reports" => [
          (object) [
  
 

Комментарии:

1. хорошо, это отлично работает. единственное, что сейчас, это то, что я отправляю вот так $account_get_user_profile->OverrideEmailSettings = $x; , что переопределяет почтовые настройки как [OverrideEmailSettings] => Array , но мне нужно, чтобы это было [OverrideEmailSettings] => stdClass Object

2. Я не уверен, откуда OverrideEmailSettings берется, но может быть, вам нужно использовать $x[$line] = (object)[

3. я уже делал это по другой причине, но это только делает [email1] => stdClass Object OverrideEmailSettings is перед этим массивом, и куда я тоже отправляю этот массив — $account_get_user_profile->OverrideEmailSettings = $x;

4. Хорошо, итак, вы пробовали добавлять (объект) перед $x $account_get_user_profile->OverrideEmailSettings = (object)$x;

5. похоже, это изменило его, но я получаю сообщение об ошибке. Я знаю, что это, вероятно, ошибка API, но она возвращает это — есть ли общий способ выяснить, какая строка вызывает ошибку на основе смещения 205? 400 Invalid request (parse error: expected number near offset 205 of '1')