PHP strcmp результат int значение - PullRequest
3 голосов
/ 24 апреля 2019

В php есть встроенная функция strcmp для сравнения, если две строки одинаковы или нет.

Возвращаемым значением является целое число, которое, если первый параметр больше второго, я получаю > 0, если нет < 0 и если то же самое 0.

Так что часть, которую я не получаю, сравнивает строку как число. Преобразует ли PHP строку в число, и если да, то как преобразуется PHP?

$a = 'acorn';
$b = 'zebra';
var_dump( strcmp($a, $b) ); // -25 <- what's this number? seems like alphabetical position...nnn

Разве не имеет значения, какой номер я получу, я просто возьму, какой он есть?

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Глядя на PHP: strcmp doc:

Возвращает <0, если str1 меньше, чем str2; > 0, если str1 больше чем str2 и 0, если они равны.

Так что да, вы можете использовать его для сравнения вашей строки.

Но если вы хотите понять число, возвращаемое функцией, это зависит от символов, которые составляют строки.

В ASCII:

A = 65

Так что, если строка отличается, одна будет больше другой.

Так что вы также можете легко проверить это с помощью короткого скрипта:

<?php

$a='A';
$b='B';
$c='C';

//Return -1 because $a is smaller than $b by one (65 < 66 )
echo strcmp($a,$b);

//Return -2 because $a is smaller than $c by two (65 < 67 )
echo strcmp($a,$c);


//Return -1 because $b is smaller than $c by one (66 < 67 )
echo strcmp($b,$c);

//Return 1 because $c is greater than $b by one (67 > 66 )
echo strcmp($c,$b);

//Return 2 because $c is greater than $a by two (67 > 65 )
echo strcmp($c,$a);
0 голосов
/ 24 апреля 2019

strcmp используется для сравнения двух строк в PHP. Если ваш результат больше 0, его средняя переменная 1 ($ a) больше, чем Var2 ($ b) если возвращаемый результат меньше 0, его среднее значение $ b больше, а если результат равен 0, его среднее значение обе строки равны друг другу.

$a="Hello world!";
$b= "Hello world!";
var_dump(strcmp($a, $b)); // result is 0

$a = "Hello";
$b = "Hello World";
var_dump(strcmp($a, $b)); // Outputs: -6

и если вы хотите увидеть разницу, вы можете использовать это

$a = 'some-content-here-example';
$b = 'some-content-example';
$asp = preg_split('//', $a, -1);
$bsp = preg_split('//', $b, -1);

$l1 = count($asp);
$l2 = count($bsp);

$length = $l1;
if ($l2 > $l1) {
    $length = $l2;
}
$record = null;
$x = null;
for ($x = 0; $x < $length; $x++) {
    if ($a[$x] != $b[$x]) {
        if (!isset($a[$x])) {
            $record.= $b[$x];
        } else {
            $record.= $a[$x];
        }
    }
}

echo $record;
...