簡體   English   中英

如何在PHP中刪除多維數組中的特定層?

[英]How to remove specific layer in multi-dimensional array in PHP?

我有一個多維數組,我想在其中刪除特定的數據層。 基本上,我想刪除所有數字標簽,即 [0] => Array、[1] => Array、[2] => Array 和 [3] => Array。

這是我目前擁有的數組:

Array
(
    [0] => Array
        (
            [CN=Abraham Lincoln,CN=Users,DC=test,DC=io] => Array
                (
                    [objectclass] => Array
                        (
                            [0] => top
                            [1] => person
                            [2] => organizationalPerson
                            [3] => user
                        )
                    [cn] => Abraham Lincoln
                )
        )

    [1] => Array
        (
            [CN=Administrator,CN=Users,DC=test,DC=io] => Array
                (
                    [objectclass] => Array
                        (
                            [0] => top
                            [1] => person
                            [2] => organizationalPerson
                            [3] => user
                        )
                    [distinguishedname] => CN=Administrator,CN=Users,DC=test,DC=io
                )

        )

    [2] => Array
        (
            [CN=CloudNCUsers,CN=Users,DC=test,DC=io] => Array
                (
                    [objectclass] => Array
                        (
                            [0] => top
                            [1] => group
                        )
                    [distinguishedname] => CN=CloudNCUsers,CN=Users,DC=test,DC=io
                )

        )

    [3] => Array
        (
            [CN=Jill Dope,CN=Users,DC=test,DC=io] => Array
                (
                    [objectclass] => Array
                        (
                            [0] => top
                            [1] => person
                            [2] => organizationalPerson
                            [3] => user
                        )
                    [distinguishedname] => CN=Jill Dope,CN=Users,DC=test,DC=io
                )

        )
)

這是我需要的數組:

Array
(
    [CN=Abraham Lincoln,CN=Users,DC=test,DC=io] => Array
        (
            [objectclass] => Array
                (
                    [0] => top
                    [1] => person
                    [2] => organizationalPerson
                    [3] => user
                )
            [cn] => Abraham Lincoln
            )
       )

    [CN=Administrator,CN=Users,DC=test,DC=io] => Array
        (
            [objectclass] => Array
                (
                    [0] => top
                    [1] => person
                    [2] => organizationalPerson
                    [3] => user
                )
                [distinguishedname] => CN=Administrator,CN=Users,DC=test,DC=io
         )


    [CN=CloudNCUsers,CN=Users,DC=test,DC=io] => Array
        (
            [objectclass] => Array
                (
                    [0] => top
                    [1] => group
                )
        )

    [CN=Jill Dope,CN=Users,DC=test,DC=io] => Array
        (
            [objectclass] => Array
                (
                    [0] => top
                    [1] => person
                    [2] => organizationalPerson
                    [3] => user
                )
             [distinguishedname] => CN=Jill Dope,CN=Users,DC=test,DC=io
        )
)

任何幫助將不勝感激,謝謝!

您可以使用key從數組中刪除級別並reset並保存到新數組:

$result = array();
foreach ($entries as $entry) {
    $result[key($entry)] = reset($entry);
}

3v4l.org 上的演示

當您最初加載數組時,您應該能夠做同樣的事情以節省這個額外的步驟:

$entry = ldap_get_entries($ldapconnection, $result);
$array[key($entry)] = reset($entry);

請注意,這假設所有鍵值( CN=Abraham Lincoln,CN=Users,DC=test,DC=io等)都是唯一的。 如果不是,則數組中較晚的值將覆蓋輸出中較早的值。 另請注意,如果ldap_get_entries返回多個值,這將刪除除第一個之外的所有值。 但是,根據您現有的代碼和您提供的示例數據,情況似乎並非如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM