Ich brauchte eine eindeutige interne int zu verwenden, die mehrere zufällige Inhaltstypen, die ich nicht hart als Klassenkonstanten oder Konfigurationsoptionen codieren könnte darstellen würde. Ich wollte jedoch nicht auf "2" verweisen, wenn ich den einfacher zu verstehenden Begriff "post" verwenden könnte. So, obwohl bis die eine Möglichkeit, einen INT-Wert aus einer Zeichenfolge zu erhalten, die scheint ziemlich Kollision frei für ein paar Elemente zu arbeiten.
Gibt es eine Möglichkeit, dies in php zu tun, anstatt was ich gebaut?
$strings = array('post', 'comment', 'blog', 'article', 'forum', 'news', 'page');
foreach( $strings as $string ) {
print $string . ' = ';
$string = str_split($string);
$sum = 0;
foreach( $string as $char ) {
$sum += ord($char);
}
var_dump( $sum );
print '<br />';
}
- Dies hat nichts mit Benutzereingaben zu tun, also machen Sie sich keine Gedanken über die offensichtlichen Mängel im Design.
EDIT:
Ich benötige einen numerischen Index zum Speichern in einer Datenbank, um schnell nachschlagen zu können, z.B. um "Beiträge" von "Artikeln" oder "Nachrichten" zu unterscheiden. Ich weiß jedoch nicht, wie diese 1-8 Inhaltstypen heißen werden, also kann ich sie nicht als Konstanten in der App fest codieren. Daher wäre das Beste, was ich mir vorstellen kann, eine numerische Version jedes Wortes zu erstellen (was bedeutet, dass ich überprüfen muss, dass zwei Wörter nicht die gleiche Zahl ergeben).
Bei einem System mit mehr als 8 Wörtern ist diese Methode wegen der hohen Wahrscheinlichkeit von Summenkollisionen zum Scheitern verurteilt. Wenn ich die Wahl hätte zu wissen, welche Wörter verwendet werden, dann wäre dies auch ein schreckliches Design, da Klassenkonstanten viel besser funktionieren würden.