#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);
Ответ №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')