如何从php循环发送整个数组?

时间:2016-03-21 10:46:55

标签: php arrays ldap

我有一个LDAP服务器,我有所有注册用户。有超过3000个用户,LDAP对一个搜索结果有 1000个条目限制。我需要将所有用户放在一个'数组'中用于json和管理等等。

我的搜索结果代码超过1000个条目:

$bind = ldap_bind($ds, $dn, $ldapconfig['password']);
$pageSize = 100;
$cookie = '';
$i = 0;
$attributes = array("email", "verificationHash", "gn", "sn");

do {
    ldap_control_paged_result($ds, $pageSize, true, $cookie);
    $filter = '(&(objectClass=Client))';
    $result  = ldap_search($ds, $baseDN, $filter, $attributes);
    $entries = ldap_get_entries($ds, $result);

    array_shift( $entries );

    $usersJSON = json_encode( $entries );

    header('Content-Type: application/json');
    echo $usersJSON; // return all users from ldap (over 3000)

    ldap_control_paged_result_response($ds, $result, $cookie);

} while($cookie !== null && $cookie != '');

// return array for javascript
$output = json_encode(
    array(
        'status' => true,
        'text' => 'Something',
        'data' => $entries
    )
);
die($output);

在前端我需要整个数组,但我只得到前100个条目。如何将循环结果拆分为一个变量数组?

1 个答案:

答案 0 :(得分:0)

对我来说,看起来你在每次迭代时用新数据覆盖你的$entries数组。所以我做这样的事情:

…
$entries = array();
do {
    …
    $entries = array_merge(ldap_get_entries($ds, $result), $entries);
    …
} while(…)
unset($entries['count']);
…

array_merge救援;)