如何在 PHP 中组织具有无组织数组元素的 CSV 数据?

我想将这个数组输出为 CSV 文件。


Array

(

    [dc=example,dc=com] => Array

        (

            [o] => example.com

            [objectclass] => Array

                (

                    [0] => simpleSecurityObject

                    [1] => dcObject

                    [2] => organization

                )


            [dc] => example

        )


    [uid=newton,dc=example,dc=com] => Array

        (

            [sn] => Newton

            [objectclass] => Array

                (

                    [0] => simpleSecurityObject

                    [1] => dcObject

                    [2] => organization

                )


            [uid] => Newton

            [mail] => newton@ldap.forumsys.com

            [cn] => Isaac Newton

        )


)

目前,当我打印所有数据时,这就是我得到的。


dn,o,objectclass,dc,sn, uid, mail, cn

dc=example,dc=com,example.com,simpleSecurityObject:dcObject:organization,example

uid=newton,dc=example,dc=com,Newton,simpleSecurityObject:dcObject:organization,Newton,newton@ldap.forumsys.com,Isaac Newton

这只是以 CSV 格式打印的所有数据,但按照它们最初在数组中排列的顺序排列。


我想确保所有元素实际上都与它们应该的值匹配。这是我想要的输出:


dn,o,objectclass,dc,sn, uid, mail, cn

dc=example,dc=com,example.com,{simpleSecurityObject,dcObject,organization},example, , , , 

uid=newton,dc=example,dc=com, ,{simpleSecurityObject,dcObject,organization},  ,Newton,Newton,newton@ldap.forumsys.com,Isaac Newton

请注意,在第一个元素中,我们没有 sn、uid、mail 和 cn 属性,因此这些属性留空。第二个元素缺少 o 和 dc,因此它们是空白的。


目前数据也出现故障。

我如何

  1. 确保数据位于正确的位置

  2. 确保任何缺失的字段都保留为“”,而不是仅仅跳到下一个元素?


跃然一笑
浏览 76回答 1
1回答

MYYA

改变这一行foreach ( $val as $key => $value ) {有了这个foreach ($attributes_list as $key){    $value=$val[$key];因此,即使字段为空,您也始终会打印所有字段,并且所有字段都保留在原处。如果您不想收到有关丢失密钥的警告,只需检查是否存在并在不存在时打印“”。然后$value_array = implode(":", $value);$value_array = rtrim($value_array, ":");$value_array = $value_array.",";变成$value_array = implode(",", $value);$value_array = "{".$value_array."},";应该rtrim没有必要。Implode将字符串放在值之间。
打开App,查看更多内容
随时随地看视频慕课网APP