Quelqu'un a suggéré à E pour utiliser Splobitstorage pour garder une trace d'un ensemble de choses uniques. Génial, sauf que cela ne fonctionne pas avec des chaînes. Une erreur indique "SplObjectStorage :: Fixation () s'attend à ce que le paramètre 1 soit objet, chaîne donnée dans fback.php à la ligne 59" p>
Des idées? P>
5 Réponses :
envelopper la chaîne dans une STDCLASS?
$dummy_object = new stdClass(); $dummy_object->string = $whatever_string_needs_to_be_tracked; $splobjectstorage->attach($dummy_object);
Pouvez-vous fournir un exemple de code sur la manière de stocker un ensemble de chaînes uniques, puis de les utiliser sur eux? Pourquoi est-ce si difficile dans php ??
Ne pouviez-vous pas les stocker dans un tableau? On dirait que vous compliquez un peu beaucoup des choses;)
foreach (StringStore::$strings as $string) { // whatever }
the Le meilleur moyen de stocker une collection de Strings uniques SI à utiliser des tableaux (en tant que hashables) avec la chaîne comme clé ainsi que la valeur (comme suggéré par Ian Selby ). P> SplObjectStorage code>
est ce que son nom dit: une classe de stockage pour stocker des objets. Contrairement à certaines autres langages de programmation Strings Code> ne sont pas des objets dans PHP, ils sont, bien, cordes ;-). Il n'a donc aucun sens de stocker des chaînes dans un
Splobitstorage code> - même si vous enveloppez vos chaînes dans un objet de classe
stdclass code>.
$ob1 = new stdClass();
$id1 = spl_object_hash($ob1);
$ob2 = new stdClass();
$id2 = spl_object_hash($ob2);
$objects = array(
$id1 => $ob1,
$id2 => $ob2
);
C'est un objet
ou peut-être simplement instancier votre chaîne comme objet avec __Tostring () - de cette façon, vous pouvez les avoir à la fois - objet et capacité à l'utiliser comme chaîne (Var_Dump, Echo) .. P>