为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 PHP 和 PHP 迭代多维数组保存为 JSON/BSON?

如何使用 PHP 和 PHP 迭代多维数组保存为 JSON/BSON?

PHP
牛魔王的故事 2023-12-15 15:41:05
我有这段代码,请随意跳到代码底部,我试图迭代数组,我留下了整个代码,以便它可以用于测试目的。<?php//Saves all the attributes of all entries into an array.function cleanUpEntry( $entry ) {  $retEntry = array();  for ( $i = 0; $i < $entry["count"]; $i++ ) {    if (is_array($entry[$i])) {      $subtree = $entry[$i];      //This condition should be superfluous so just take the recursive call      //adapted to your situation in order to increase perf.      if ( ! empty($subtree['dn']) and ! isset($retEntry[$subtree['dn']])) {        $retEntry[$subtree['dn']] = cleanUpEntry($subtree);      }      else {        $retEntry[] = cleanUpEntry($subtree);      }    }    else {      $attribute = $entry[$i];      if ( $entry[$attribute]['count'] == 1 ) {        $retEntry[$attribute] = $entry[$attribute][0];      } else {        for ( $j = 0; $j < $entry[$attribute]['count']; $j++ ) {          $retEntry[$attribute][] = $entry[$attribute][$j];        }      }    }  }  return $retEntry;}  $ldaprdn = "cn=read-only-admin,dc=example,dc=com";  $ldappass ="password";  $ldapuri = "ldap.forumsys.com";  // Connecting to LDAP  $ldapconn = ldap_connect($ldapuri)          or die("That LDAP-URI was not parseable");  //We need to set the LDAP Protocol Version or else it isn't able to bind properly to the LDAP server.  ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);  ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);  //We bind to the LDAP server using the previous credentials and location.  $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);  // Verify if bind was successful or not  if ($ldapbind) {      echo "LDAP bind successful...\n";  } else {      echo "LDAP bind failed...\n";  }
查看完整描述

1 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

假设只有两个级别,您可以轻松执行 2 次foreach 循环:


<?php

$arr    =   [

    'dc=example,dc=com' => [

        

        'objectclass' => [

            'top',

            'dcObject',

            'organization'

        ],

        'o' => 'example.com',

        'dc' => 'example'

    ],

    'cn=admin,dc=example,dc=com' => [

        'objectclass' => [

            'simpleSecurityObject',

            'organizationalRole'

        ],

        'cn' => 'admin',

        'description' => 'LDAP administrator'

    ],

    'uid=newton,dc=example,dc=com' => [

        'sn' => 'Newton',

        'objectclass' => [

            'inetOrgPerson',

            'organizationalPerson',

            'person',

            'top'

        ],

        'uid' => 'newton',

        'mail' => 'newton@ldap.forumsys.com',

        'cn' => 'Isaac Newton'

    ]

];


foreach($arr as $name => $settings) {

    $new[]  =   PHP_EOL."Name: {$name}";

    foreach($settings as $k => $v) {

        $new[]  =   "{$k}: ".((is_array($v))? implode(PHP_EOL."{$k}: ", $v) : $v);

    }

}


print_r(trim(implode(PHP_EOL, $new)));

会给你:


Name: dc=example,dc=com

objectclass: top

objectclass: dcObject

objectclass: organization

o: example.com

dc: example


Name: cn=admin,dc=example,dc=com

objectclass: simpleSecurityObject

objectclass: organizationalRole

cn: admin

description: LDAP administrator


Name: uid=newton,dc=example,dc=com

sn: Newton

objectclass: inetOrgPerson

objectclass: organizationalPerson

objectclass: person

objectclass: top

uid: newton

mail: newton@ldap.forumsys.com

cn: Isaac Newton

至于json,您可能只需使用json_encode($arr)自动将其设为json(如评论中所述)。


查看完整回答
反对 回复 2023-12-15
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信