2017-01-02 2 views
0

Ich möchte den MD5-Wert eines Strings berechnen, der das Ergebnis von json_encode eines assoziativen Array war, das von MySQL erhalten wurde.Wird json_encode immer das gleiche Ergebnis für ein assoziatives Array in PHP zurückgeben?

Kann ich den gleichen MD5-Wert erhalten, wenn die Daten nicht geändert wurden? Oder muss ich die Schlüssel des assoziativen Arrays nach einigen Regeln sortieren, um sicherzustellen, dass die json_encode-Funktion die gleiche Zeichenfolge zurückgeben kann?

Antwort

1

Sie müssen das Array vorher sortieren oder die MD5 wird anders sein. Überlegen Sie, ob Sie die krsort-Funktion verwenden.

Folgen Sie this Link für weitere Informationen.

+0

Richtige Antwort. Haben Sie eine Vorliebe für 'krsort' gegenüber' ksort'? – trincot

+0

Korrekt, aber möglicherweise nicht der Anwendungsfall. Wenn die Array-Schlüssel in derselben Reihenfolge eingegeben wurden, ist der json_encode-Wert für dieselben Werte derselbe. Da die Frage erwähnt, dass es sich um ein Array aus einem MySql-Abfrageergebnis handelt, sind die Schlüssel identisch, und in der gleichen Reihenfolge können nur die Werte unterschiedlich sein, so dass es zwar nicht schadet, aber nur unnötig ist. –

+0

@trincot Ich bin von der Art des Arrays abhängig. Ein einfacher ksort für ein einfaches Array und ein krsort für ein verschachteltes Array (ein Array von Array). –