从数组创建 PHP stdClass 对象

时间:2020-12-20 13:36:40

标签: php arrays

我正在尝试在 PHP 中创建这种格式的信息/数组

[OverrideEmailSettings] => stdClass Object (
        [email@domain.com] => stdClass Object (
            [Reports] => Array (
                    [0] => stdClass Object (
                            [ReportType] => 1
                            [SummaryFrequency] => Array (
                                [0] => stdClass Object (
                                        [FrequencyType] => 8011
                                        [SecondsPast] => 32400
                                )
                            )
                            [Filter] => stdClass Object (
                                [ClauseType] => and
                                [RuleField] => 
                                [RuleOperator] => 
                                [RuleValue] => 
                                [ClauseChildren] => Array (
                                    [0] => stdClass Object (
                                        [ClauseType] => 
                                        [RuleField] => BackupJobDetail.TimeSinceStarted
                                        [RuleOperator] => int_lte
                                        [RuleValue] => 86400
                                    )   
                                )
                            )
                    )
                )
            )
        )

这是我的代码 - $line = the equivelent to email@domain.com

$x = array(
        'Reports' => array(
            'ReportType' => '1',
            'SummaryFrequency' => array(
                'FrequencyType' => '8011',
                'SecondsPast' => '32400',
            ),
            'Filter' => array(
                'ClauseType' => 'or',
                'RuleField' => '',
                'RuleOperator' => '',
                'RuleValue' => '',
                'ClauseChildren' => array(
                    'ClauseType' => '',
                    'RuleField' => 'BackupJobDetail.TimeSinceStarted',
                    'RuleOperator' => 'int_lte',
                    'RuleValue' => '86400',
                ),
            ),
        ),
    );
    
$account_get_user_profile->OverrideEmailSettings->$line = $x;

但我想我的格式不正确。

1 个答案:

答案 0 :(得分:1)

您需要将数组转换为 stdClass,例如:

<?php
$x = [
    "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);

PHP online code