Kaivan LDAP:ista tietoja, ja tarkoituksena olis hakea kaikki käyttäjät ja tulostaa tietty tieto, esimerkkinä otettakoon nimi. Haku onnistuu, mutta taulukosta tietojen pullauttaminen ei onnistu kun nuo moniulotteiset taulukot pyörivät vielä vähän tajuntani ulkopuolella.
Elikäs jos hakisin tiettyä käyttäjää niin olisi näin
$ldap["info"] = ldap_get_entries( $ldap["conn"], $ldap["result"] ); echo $ldap["info"][0]["displayname"][0];
Mutta entäs kun haetaan kaikki? Jonkinlaisella sisäkkäisellä foreach systeemillä vissiin, mutta en keksi että miten.
Jos moniulotteiset taulukot tuntuvat sekavilta niin laita hieman debug-koodia, print_r tulostaa ne nätisti:
$ldap["info"] = ldap_get_entries( $ldap["conn"], $ldap["result"] ); print_r($ldap["info"]);
Juu tuolla print_r_llä yritin sitä tutkia mutta en vaan millään saa aivojani venymään ymmärrykseen siitä minkämoisella foreach härdellillä tuosta saisi pelkän yhden tiedon alta kaikki.
En LDAPista mitään tiedä, ja selityksesikin jäi vähän auki, mutta tällainen tulisi ensiksi mieleen:
<?php // for-silmukalla echo "<ol>"; for ($i = 0; $i < count($ldap["info"]); ++$i) { echo "<li><ol>"; for ($j = 0; $j < count($ldap["info"][$i]["displayname"]); ++$j) { echo "<li>", $ldap["info"][$i]["displayname"][$j], "</li>\n"; } echo "</ol></li>"; } echo "</ol>"; // foreach-silmukalla echo "<ol>"; foreach ($ldap["info"] as $info) { echo "<li><ol>"; # $info == $ldap["info"][$i] foreach ($info["displayname"] as $nimi) { # $nimi == $ldap["info"][$i]["displayname"][$j]; echo "<li>$nimi</li>\n"; } echo "</ol></li>"; } echo "</ol>"; ?>
Kiitoksia suuresti, tuolla onnistui.
Aihe on jo aika vanha, joten et voi enää vastata siihen.