如何在PHP中删除多维数组中的特定层?
我有一个多维数组,我想在其中删除一个特定的数据层。基本上,我想删除所有数字标签,即[0]=>Array、[1]=>Array、[2]=>Array和[3]=>Array 以下是我目前拥有的阵列:如何在PHP中删除多维数组中的特定层?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个多维数组,我想在其中删除一个特定的数据层。基本上,我想删除所有数字标签,即[0]=>Array、[1]=>Array、[2]=>Array和[3]=>Array 以下是我目前拥有的阵列: Array ( [0] => Array ( [CN=Abraham Lincoln,CN=Users,DC=test,DC=io] => Array ( [objectc
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
)
)
任何帮助都将不胜感激,谢谢 您可以使用和从阵列中删除某个级别,并将其保存到新阵列:
$result = array();
foreach ($entries as $entry) {
$result[key($entry)] = reset($entry);
}
您应该能够在最初加载阵列时执行相同的操作,以保存此额外步骤:
$entry = ldap_get_entries($ldapconnection, $result);
$array[key($entry)] = reset($entry);
注意,这假设所有键值(
CN=Abraham Lincoln,CN=Users,DC=test,DC=io
等)都是唯一的。如果不是,则数组中稍后的值将覆盖输出中较早的值。还要注意,如果ldap\u get\u条目
返回多个值,这将删除除第一个值以外的所有值。但是,根据您现有的代码和提供的示例数据,情况似乎并非如此。您可以使用并保存到新阵列,从阵列中删除一个级别:
$result = array();
foreach ($entries as $entry) {
$result[key($entry)] = reset($entry);
}
您应该能够在最初加载阵列时执行相同的操作,以保存此额外步骤:
$entry = ldap_get_entries($ldapconnection, $result);
$array[key($entry)] = reset($entry);
注意,这假设所有键值(
CN=Abraham Lincoln,CN=Users,DC=test,DC=io
等)都是唯一的。如果不是,则数组中稍后的值将覆盖输出中较早的值。还要注意,如果ldap\u get\u条目
返回多个值,这将删除除第一个值以外的所有值。但是,根据您现有的代码和提供的示例数据,情况似乎并非如此。您是如何制作阵列的?修复它,因此不推送到一个新的数组,而是使用您想要的密钥首先初始化一个新容器,然后使用foreach。使用reset函数以子数组值为目标,使用key函数以键为目标,最后简单地将它们分配到新容器中。但是要小心,如果您希望每个子组上有多个值,那么您会将其覆盖到最后一个值。本质上,如果我再次尝试,我如何创建此数组将导致相同的问题。我基本上是对LDAP服务器进行查询,然后通过以下操作保存搜索结果:$array[]=LDAP\u get\u条目($ldapconnection,$result);你是如何制作阵列的?修复它,因此不推送到一个新的数组,而是使用您想要的密钥首先初始化一个新容器,然后使用foreach。使用reset函数以子数组值为目标,使用key函数以键为目标,最后简单地将它们分配到新容器中。但是要小心,如果您希望每个子组上有多个值,那么您会将其覆盖到最后一个值。本质上,如果我再次尝试,我如何创建此数组将导致相同的问题。我基本上是对LDAP服务器进行查询,然后通过以下操作保存搜索结果:$array[]=LDAP\u get\u条目($ldapconnection,$result);