(PHP)获取数组(对象)的不同结构的通用代码

时间:2015-07-10 10:06:48

标签: php arrays

我有两个返回的数组(对象)结构:

1)如果只返回 1个数据

stdClass Object
(
    [result] => stdClass Object
        (
            [recordData] => stdClass Object
                (
                    [fieldNames] => Array
                        (
                            [0] => CUSTOMER_ID_
                            [1] => EMAIL_ADDRESS_
                            [2] => FIRST_NAME
                            [3] => LAST_NAME
                            [4] => SEX
                            [5] => DATE_OF_BIRTH
                        )

                    **[records] => stdClass Object
                        (
                            [fieldValues] => Array
                                (
                                    [0] => CUSTOMER_ID_001
                                    [1] => email001@test.com
                                    [2] => FIRST_NAME_001
                                    [3] => LAST_NAME_001
                                    [4] => M
                                    [5] => 01/01/1991
                                )
                        )**

                )

        )

)

2)如果超过1个数据返回:

stdClass Object
(
    [result] => stdClass Object
        (
            [recordData] => stdClass Object
                (
                    [fieldNames] => Array
                        (
                            [0] => CUSTOMER_ID_
                            [1] => EMAIL_ADDRESS_
                            [2] => FIRST_NAME
                            [3] => LAST_NAME
                            [4] => SEX
                            [5] => DATE_OF_BIRTH
                        )

                    **[records] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [fieldValues] => Array
                                        (
                                            [0] => CUSTOMER_ID_001
                                            [1] => email001@test.com
                                            [2] => FIRST_NAME_001
                                            [3] => LAST_NAME_001
                                            [4] => M
                                            [5] => 01/01/1991
                                        )
                                )
                            [1] => stdClass Object
                                (
                                    [fieldValues] => Array
                                        (
                                            [0] => CUSTOMER_ID_002
                                            [1] => email002@test.com
                                            [2] => FIRST_NAME_002
                                            [3] => LAST_NAME_002
                                            [4] => F
                                            [5] => 02/02/1992
                                        )
                                )
                        )**

                )

        )

)

目前我正在使用此代码:

foreach ($memberlist->result->recordData->records as $list)
    {   
        $out .= "<tr>";

        foreach ($list as $memberarray)
            {
                foreach ($memberarray as $member)
                    {
                        $out .= "<td>" . $member . "</td>";
                    }
            }

        $out .= "</tr>";
    }

但只返回1个数据时它不起作用。

如何修改我的代码才能获得这两种结构?

谢谢。

1 个答案:

答案 0 :(得分:3)

我相信这应该可以解决问题:

// If it is already an array, leave it as an array, if it's not, place it in an array
$member_records = ( is_array( $memberlist->result->recordData->records ) ? $memberlist->result->recordData->records : array( $memberlist->result->recordData->records ) );

foreach ($member_records as $list)
{   
    $out .= "<tr>";

    foreach ($list as $memberarray)
        {
            foreach ($memberarray as $member)
                {
                    $out .= "<td>" . $member . "</td>";
                }
        }

    $out .= "</tr>";
}