substr_compare () возвращает неправильное значение в php - PullRequest
1 голос
/ 05 января 2020

Третье значение для начальной позиции, поэтому я поставил 2, и он должен вернуть 0.

Но он возвращает "1", почему?!

$txt1 = "Bearner";
$txt2 = "Learner";
$per = substr_compare($txt1, $txt2, 2);

Ответы [ 2 ]

0 голосов
/ 05 января 2020

Только первый параметр обрезается в позиции x, второй параметр остается неизменным. substr_compare($txt1, $txt2, 2); будет сравнивать 'arner' с 'Learner'.

$txt1 = "Bearner" ;
$txt2 = "arner" ;
$per = substr_compare($txt1, $txt2, 2); 
var_dump($per) ; // 0 

Если вы хотите сравнить две подстроки, вам нужно вырезать их самостоятельно:

$txt1 = "Bearner" ;
$txt2 = "Learner" ;
$per = strcmp( substr($txt1, 2), substr($txt2, 2) );
var_dump($per); // 0
0 голосов
/ 05 января 2020

«Начальная позиция» относится только к начальной позиции в первой строке, но не к обеим.

Это приводит к тому, что сравниваемые строки полностью различаются. (В вашем случае вы сравниваете 'arner' с 'Learner').

Что вы хотите сделать, это сравнить обе строки с этого момента. Чтобы сделать это, вам нужно будет ссылаться на подстроки вместо всей строки при сравнении.

$txt1 = "Bearner";
$txt2 = "Learner";
$per = substr_compare(substr($txt1, 2), substr($txt2, 2), 0);

Если вы запустите этот код, вы увидите, что он возвращает 0, как и ожидалось.

...