php convertir stdClass object à la matrice
Quelqu'un pourrait nous donner un indice quant à pourquoi je peux obtenir ce travail.
Je veux la requête d'un tableau pour voir si le USER->id
qui est actuellement connecté est attribué un rôle spécifique:
$contextroles = get_records_sql("SELECT userid FROM {$CFG->prefix}role_assignments WHERE contextid = 23 AND roleid = 3");
function object2array($object) {
if (is_object($object)) {
foreach ($object as $key => $value) {
$array[$key] = $value;
}
}
else {
$array = $object;
}
return $array;
}
$alloweduser = object2array($contextroles);
if (in_array($USER->id, $alloweduser)) {
echo'Your in<br />';
echo $USER->id.'<br />';
print_r($alloweduser);
}
else{
echo'<br />You do not have permission to acces this database.<br />';
echo $USER->id.'<br />';
print_r($alloweduser);
exit;
}
Im actuellement l'obtention de cette sortie:
Vous n'avez pas la permission d'accéder à cette base de données.
5410
Array ( [7] => stdClass Object ( [id utilisateur] => 7 ) [9] => stdClass Object ( [id utilisateur] => 9 ) [27] => stdClass Object ( [id utilisateur] => 27 ) [98] => stdClass Object ( [id utilisateur] => 98 ) [203] => stdClass Object ( [id utilisateur] => 203 ) [252] => stdClass Object ( [id utilisateur] => 252 ) [5410] => stdClass Object ( [id utilisateur] => 5410 ) )
Comme vous pouvez le voir 5410 est dans le tableau ne devrait donc pas obtenir accessible refusé.
Merci d'avance pour toute aide.
$USER, $CFG
venir? Et quel est le problème avec l'objet qui vous DEVEZ la convertir en tableau?Votre
object2array()
fonction est redondant. Coulage d'un objet à (array)
a le même effet.Vous n'êtes pas à dire que le
get_records_sql()
. Peut-être vous pouvez simplement modifier pour qu'elle retourne un tableau? Qu'est-ce que $USER->id
? Et en plus je ne suis pas sûr si vous pouvez faire un foreach
sur un objet. Aussi, "5410" n'est pas dans le tableau, mais plutôt une autre stdObject
qui détient le userid "5410". C'est une différence.OriginalL'auteur Codded | 2011-09-01
Vous devez vous connecter pour publier un commentaire.
Parce que
5410 != stdClass Object ( [userid] => 5410 )
si vous utilisezin_array()
.Depuis votre clé du tableau ressemble même avec
userid
, il vous suffit d'utiliserisset($alloweduser[$USER->id])
à la place.également supprimé la fonction: Votre object2array() la fonction est redondant. Le coulage d'un objet (array) a le même effet. – Rijk van Wel 2
Au lieu de
isset()
, utilisezarray_key_exists($USER->id,$alloweduser);
OriginalL'auteur xdazz