Zoeken in een array PHP

Status
Niet open voor verdere reacties.

henkjan111

Gebruiker
Lid geworden
9 jan 2011
Berichten
221
Hallo,

Ik ben bezig met een login systeem based op Active Directory, i.v.m. rechten wil ik gebruik maken van de OU waarin een user zich bevindt. Het zoeken is geen probleem, echter het filteren wel.
De array wordt op deze manier opgeroepen:
PHP:
print "<pre>";
print_r ($entries);
print "</pre>";
Dit is de array die eruit gerold komt:
Code:
Array
(
    [count] => 1
    [0] => Array
        (
            [uniquemember] => Array
                (
                    [count] => 4
                    [0] => uid=einstein,dc=example,dc=com
                    [1] => uid=galieleo,dc=example,dc=com
                    [2] => uid=tesla,dc=example,dc=com
                    [3] => uid=newton,dc=example,dc=com
                )

            [0] => uniquemember
            [ou] => Array
                (
                    [count] => 1
                    [0] => scientists
                )

            [1] => ou
            [cn] => Array
                (
                    [count] => 1
                    [0] => Scientists
                )

            [2] => cn
            [objectclass] => Array
                (
                    [count] => 2
                    [0] => groupOfUniqueNames
                    [1] => top
                )

            [3] => objectclass
            [count] => 4
            [dn] => ou=scientists,dc=example,dc=com
        )

)

Bij de andere Arrays, waar ik maar een waarde heb, kan ik op deze manier de enkele waarde eruit halen:

PHP:
echo $entries[0]["uniquemember"][0];

Echter werkt dit bij deze array niet. Het is de bedoeling, dat ik wil controleren of user X in deze array voor komt. Hoe?
 
Misschien handig om te vermelden voor mensen die niet met AD werken welke waarde gevonden moet worden in bovenstaande array?

Als je op zoek bent naar de OU staat die direct in de array onder:
PHP:
echo $entries[0]["ou"][0];

maar ik neem aan dat je iets anders zoekt?
 
Misschien handig om te vermelden voor mensen die niet met AD werken welke waarde gevonden moet worden in bovenstaande array?

Als je op zoek bent naar de OU staat die direct in de array onder:
PHP:
echo $entries[0]["ou"][0];

maar ik neem aan dat je iets anders zoekt?

Het betreft:

[count] => 4
[0] => uid=einstein,dc=example,dc=com
[1] => uid=galieleo,dc=example,dc=com
[2] => uid=tesla,dc=example,dc=com
[3] => uid=newton,dc=example,dc=com

Ik wil controleren of bijvoorbeeld gebruiker tesla in de array voorkomt.
 
ik zou eerst zoiets proberen (spelfouten voorbehouden):

PHP:
$gevonden = array_search('uid=tesla', array_column($entries, 'uniquemember'));
if $gevonden === false ....

EDIT: array_column is relatief nieuw (5.5 en hoger) dus mogelijk heeft je installatie die nog niet. In dat geval kun je $entries[0]["uniquemember"] meegeven. (array_column werkt met alle eventuele entries en is dus beter universeel inzetbaar)
 
Laatst bewerkt:
ik zou eerst zoiets proberen (spelfouten voorbehouden):

PHP:
$gevonden = array_search('uid=tesla', array_column($entries, 'uniquemember'));
if $gevonden === false ....

EDIT: array_column is relatief nieuw (5.5 en hoger) dus mogelijk heeft je installatie die nog niet. In dat geval kun je $entries[0]["uniquemember"] meegeven. (array_column werkt met alle eventuele entries en is dus beter universeel inzetbaar)

Met de array search function werkt het niet helaas.
 
Ik heb niet helemaal goed gekeken, arraysearch werkt niet met deelstrings
indien array_column geen probleem was:

PHP:
$gevonden = false;
foreach (array_column($entries, 'uniquemember') as $item)
   {
      if (strpos($item, 'uid=tesla') !== FALSE)
      {
         $gevonden = true;
         break;
      }
   }

Heb helaas momenteel geen toegang tot een php installatie dus moet even uit de losse pols
 
Had net een andere manier gevonden die voor mij ook werkt:
Maar bedankt!

PHP:
foreach ($entries[0]["uniquemember"] as $key => $value) {
			if (strpos($value, 'uid=newten') !== false) {
   				 echo 'true';
				}
		}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan