(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
gmp_hamdist — Hamming distance
Returns the hamming distance between
num1
and
num2
. Both operands should be non-negative.
num1
A
GMP
object, an
int
,
or a
string
that can be interpreted as a number following the same logic
as if the string was used in
gmp_init()
with automatic
base detection (i.e. when
base
is equal to 0).
It should be positive.
num2
A
GMP
object, an
int
,
or a
string
that can be interpreted as a number following the same logic
as if the string was used in
gmp_init()
with automatic
base detection (i.e. when
base
is equal to 0).
It should be positive.
The hamming distance between
num1
and
num2
, as an
int
.
Example #1 gmp_hamdist() example
<?php
$ham1
=
gmp_init
(
"1001010011"
,
2
);
$ham2
=
gmp_init
(
"1011111100"
,
2
);
echo
gmp_hamdist
(
$ham1
,
$ham2
) .
"\n"
;
/* hamdist is ekivalent to: */
echo
gmp_popcount
(
gmp_xor
(
$ham1
,
$ham2
)) .
"\n"
;
?>
The above example will output:
6 6
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),' '))));
<?php
$hamdist = gmp_hamdist(-100, -10); // 4$hamdist= gmp_hamdist(100, 10); // 5?>
The function worcs great with negative numbers.