PHP Conference Nagoya 2025

gmp_hamdist

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_hamdistDistance de Hamming

Description

gmp_hamdist(GMP|int|string $num1, GMP|int|string $num2): int

Retourne la distance de Hamming entre num1 et num2. Les deux paramètres doivent être strictement positifs.

Liste de paramètres

num1

Un objet GMP, un entier, ou un chaîne de caractères qui peut être interprété comme un nombre suivant la même logique que si la chaîne était utilisée dans gmp_init() avec détection automatique de la base (c'est-à-dire lorsque base est égal à 0).

Doit être positif.

num2

Un objet GMP, un entier, ou un chaîne de caractères qui peut être interprété comme un nombre suivant la même logique que si la chaîne était utilisée dans gmp_init() avec détection automatique de la base (c'est-à-dire lorsque base est égal à 0).

Doit être positif.

Valeurs de retour

La distance de Hamming entre num1 et num2, sous la forme d'un int.

Exemples

Exemple #1 Exemple avec gmp_hamdist()

<?php
$ham1
= gmp_init("1001010011", 2);
$ham2 = gmp_init("1011111100", 2);
echo
gmp_hamdist($ham1, $ham2) . "\n";

/* hamdist est équivalent à : */
echo gmp_popcount(gmp_xor($ham1, $ham2)) . "\n";
?>

L'exemple ci-dessus va afficher :

6
6

Voir aussi

add a note

User Contributed Notes 2 notes

up
4
Bas Vijfwinkel
6 years ago
For those without gmp support :

$hamming_distance = count(array_diff_assoc(str_split($string1), str_split($string2)));

And if you are not sure if your strings have equal length :

$hamming_distance = count(array_diff_assoc(str_split(str_pad($string1,strlen($string2)-strlen($string1),' ')), str_split(str_pad($string2,strlen($string1)-strlen($string2),' '))));
up
-1
grabzila at gmail dot com
3 years ago
<?php
$hamdist
= gmp_hamdist(-100, -10); // 4
$hamdist = gmp_hamdist(100, 10); // 5
?>

The function works great with negative numbers.
To Top