39 votes

Puis-je utiliser un objet instancié comme clé de tableau ?

Par exemple :

$product = new Product("cat");

if(isset($sales[$product])){
     $sales[$product]++;
}
else{
     $sales[$product] = 1;
}

16voto

Tomáš Binek Points 169

Il existe une fonction spl_object_hash pour obtenir un identifiant d'objet unique sous forme de chaîne, qui peut être utilisé comme clé de tableau. http://php.net/manual/en/function.spl-object-hash.php

2voto

Oswald Points 18625

Seuls les entiers et les chaînes sont autorisés en tant que clés de tableau. Vous pouvez écrire une classe qui implémente ArrayAccess si vous avez absolument besoin de cette fonctionnalité.

0voto

Gabriel Glenn Points 566

Si l'objet est une simple classe prédéfinie faite avec new stdClass(), il peut être valide d'utiliser la représentation json de cette classe avec json_encode.

$product = new stdClass();
$product->brand = "Acme";
$product->name = "Patator 3.14";

$product_key = json_encode($product);

if(isset($sales[$product_key])){
     $sales[$product_key]++;
}
else{
    $sales[$product_key] = 1;
}

Mais gardez à l'esprit que l'égalité de deux objets est toujours un choix de modèle d'affaires et doit être soigneusement conçu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X