Задать вопрос
@spookyevil

Как объединить 2 массива из LDAP через PHP?

Здравствуйте, столкнулся с такой проблемой, надо вывести список пользователей из LDAP из разных групп при запросах к LDAP образу два массива данных, который имеет 1- 750 записей, 2-34, но проблема в том, что выводить данные нужно либо через цикл из двух массивов в 1 переменную, либо соединить 2 массива, но и то и то у меня не получается, все получается через костыли, пробовал объединить в 1 массив с помощью "array_merge_recursive", добавляет записи в конец первого массива, но при этом некорректно выводит данные, либо постоянно грузится странница, либо вовсе ломает код, кому не трудно помогите, скорее всего надо через цикл foreach объединить массивы, но додуматься все никак не могу.

пример кода:
$filter = "(&(objectclass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(!(description=Привилегированная УЗ)))";
		$attr = array("cn","telephonenumber");
		$result = ldap_search($ldap_con,"OU=Departments,OU=Users,OU=CU,OU=OTDEL1,DC=example,DC=com",$filter,$attr) or exit ("Не найдено");
		$entries1 = ldap_get_entries($ldap_con, $result);

		$result = ldap_search($ldap_con,"OU=Departments,OU=Users,OU=CU,OU=OTDEL2,DC=example,DC=com",$filter,$attr) or exit ("Не найдено");
		$entries = ldap_get_entries($ldap_con, $result);

		$entries2 = array_merge_recursive($entries, $entries1);

		print ("<pre>");
		print ($entries2);
		print ("</pre>");


             for ($i=0; $i<$entries2['count']; $i++) {

    			if (($entries2[$i]['telephonenumber'][0])) {
			$cn = $entries2[$i]['cn'][0];
			echo ("<td><h4>".$cn."</h4></td>	");
			
		} else {echo "нет пользователей с телефоном";}

}
}

Пример вывода:
Array
(
    [count] => Array
        (
            [0] => 750
            [1] => 34
        )

    [0] => Array
        (
            [cn] => Array
                (
                    [count] => 1
                    [0] => Иванов Иван Иванович
                )

            [0] => cn
            [telephonenumber] => Array
                (
                    [count] => 1
                    [0] => 8(11)11-1, 8(111)111-00-00
                )

            [1] => telephonenumber
            [count] => 2
            [dn] => CN=Иванов Иван Иванович,OU=Rukovodstvo,OU=Departments,OU=Users,OU=CU,OU=OTDEL1,DC=example,DC=com
        )

А должно получится при выводе вот так:
Array
(
    [0] => Array
        (
            [count] => 784      
            [0] => Array
               (
            [cn] => Array
                (
                    [count] => 1
                    [0] => Иванов Иван Иванович
                )
  • Вопрос задан
  • 104 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
@spookyevil Автор вопроса
В итоге решил немного по другому, но всем спасибо за помощь.

В итоге добавил объекты в массив с помощью:array_merge
и код получился такой, может кому пригодится:
$entries1 = ldap_get_entries($ldap_con, $result);
$entries2 = ldap_get_entries($ldap_con, $result);

$entries = array_merge($entries1, $entries2);
$entries['count'] = count($entries);


print_r($entries);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Код делает именно то, что вы просите. Значения с числовыми индексами из $entries1 добавляются в конец массива, значения со строковыми индексами ('count') сливаются в массив. Поскольку кода, который работает с объедиённым массивом вы не привели, то понять, в чём именно у вас проблема, невозможно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы